summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rwxr-xr-xasm/fire.s360
-rwxr-xr-xasm/fire_2.s955
-rw-r--r--asm/slot_machine.s10158
-rw-r--r--data/battle_anim_80CA710.s2
-rw-r--r--data/slot_machine.s1530
-rwxr-xr-xinclude/ewram.h5
-rw-r--r--include/field_effect.h1
-rw-r--r--include/global.h10
-rw-r--r--include/graphics.h47
-rw-r--r--include/heated_rock.h10
-rw-r--r--include/rom_8077ABC.h5
-rw-r--r--include/slot_machine.h75
-rw-r--r--include/sprite.h10
-rw-r--r--ld_script.txt13
-rw-r--r--src/battle/anim/fire.c146
-rw-r--r--src/battle/anim/fire_2.c326
-rw-r--r--src/field/slot_machine.c5314
-rw-r--r--src/libs/libc.c143
-rw-r--r--src/rom_8077ABC.c2
20 files changed, 5916 insertions, 13202 deletions
diff --git a/Makefile b/Makefile
index e7e2a7156..c1f6a6b4f 100644
--- a/Makefile
+++ b/Makefile
@@ -14,6 +14,7 @@ LD := $(DEVKITARM)/bin/arm-none-eabi-ld
OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy
LIBGCC := tools/agbcc/lib/libgcc.a
+LIBC := tools/agbcc/lib/libc.a
SHA1 := sha1sum -c
@@ -91,9 +92,6 @@ sound/direct_sound_samples/cry_%.bin: sound/direct_sound_samples/cry_%.aif ; $(A
sound/songs/%.s: sound/songs/%.mid
cd $(@D) && ../../$(MID) $(<F)
-%src/libs/libc.o: CC1 := tools/agbcc/bin/old_agbcc
-%src/libs/libc.o: CFLAGS := -O2
-
%src/libs/siirtc.o: CFLAGS := -mthumb-interwork
%src/libs/agb_flash.o: CFLAGS := -O -mthumb-interwork
@@ -161,7 +159,7 @@ build/$1/ld_script.ld: ld_script.txt build/$1/sym_bss.ld build/$1/sym_common.ld
cd build/$1 && sed -f ../../ld_script.sed ../../ld_script.txt | sed "s#tools/#../../tools/#g" | sed "s#sound/#../../sound/#g" >ld_script.ld
poke$1.elf: build/$1/ld_script.ld $$($1_OBJS)
- cd build/$1 && $$(LD) -T ld_script.ld -Map ../../poke$1.map -o ../../$$@ $$($1_OBJS_REL) ../../$$(LIBGCC)
+ cd build/$1 && $$(LD) -T ld_script.ld -Map ../../poke$1.map -o ../../$$@ $$($1_OBJS_REL) ../../$$(LIBGCC) ../../$$(LIBC)
poke$1.gba: %.gba: %.elf
$$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $$< $$@
diff --git a/asm/fire.s b/asm/fire.s
deleted file mode 100755
index dcf793e39..000000000
--- a/asm/fire.s
+++ /dev/null
@@ -1,360 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ fire
-
- thumb_func_start sub_80D4ED8
-sub_80D4ED8: @ 80D4ED8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080D4F0C @ =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r4, 0x2E]
- movs r0, 0x3C
- strh r0, [r4, 0x30]
- movs r0, 0x9
- strh r0, [r4, 0x32]
- movs r0, 0x1E
- strh r0, [r4, 0x34]
- movs r0, 0xFE
- lsls r0, 8
- strh r0, [r4, 0x36]
- ldr r1, _080D4F10 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- ldr r1, _080D4F14 @ =sub_8078174
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D4F0C: .4byte gBattleAnimArgs
-_080D4F10: .4byte DestroyAnimSprite
-_080D4F14: .4byte sub_8078174
- thumb_func_end sub_80D4ED8
-
- thumb_func_start sub_80D4F18
-sub_80D4F18: @ 80D4F18
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080D4F50 @ =gBattleAnimArgs
- movs r0, 0
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl sub_807867C
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x32]
- ldr r0, _080D4F54 @ =sub_8078394
- str r0, [r4, 0x1C]
- ldr r1, _080D4F58 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D4F50: .4byte gBattleAnimArgs
-_080D4F54: .4byte sub_8078394
-_080D4F58: .4byte DestroyAnimSprite
- thumb_func_end sub_80D4F18
-
- thumb_func_start sub_80D4F5C
-sub_80D4F5C: @ 80D4F5C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8078650
- ldr r0, _080D4F90 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D4F98
- ldr r2, _080D4F94 @ =gBattleAnimArgs
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r2, 0x8]
- negs r0, r0
- strh r0, [r4, 0x32]
- adds r1, r2, 0
- b _080D4FAE
- .align 2, 0
-_080D4F90: .4byte gAnimBankAttacker
-_080D4F94: .4byte gBattleAnimArgs
-_080D4F98:
- ldr r1, _080D4FC4 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x32]
-_080D4FAE:
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x36]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x34]
- ldr r0, _080D4FC8 @ =sub_80D5038
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D4FC4: .4byte gBattleAnimArgs
-_080D4FC8: .4byte sub_80D5038
- thumb_func_end sub_80D4F5C
-
- thumb_func_start sub_80D4FCC
-sub_80D4FCC: @ 80D4FCC
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080D4FF8 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D5000
- ldr r2, _080D4FFC @ =gBattleAnimArgs
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r2, 0x8]
- strh r0, [r4, 0x32]
- adds r1, r2, 0
- b _080D5018
- .align 2, 0
-_080D4FF8: .4byte gAnimBankAttacker
-_080D4FFC: .4byte gBattleAnimArgs
-_080D5000:
- ldr r1, _080D5030 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x8]
- negs r0, r0
- strh r0, [r4, 0x32]
-_080D5018:
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x36]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x34]
- ldr r0, _080D5034 @ =sub_80D5038
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D5030: .4byte gBattleAnimArgs
-_080D5034: .4byte sub_80D5038
- thumb_func_end sub_80D4FCC
-
- thumb_func_start sub_80D5038
-sub_80D5038: @ 80D5038
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x36
- ldrsh r1, [r2, r3]
- cmp r0, r1
- bge _080D505E
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x34]
- ldrh r3, [r2, 0x26]
- adds r0, r3
- strh r0, [r2, 0x26]
-_080D505E:
- movs r0, 0x2E
- ldrsh r1, [r2, r0]
- movs r3, 0x30
- ldrsh r0, [r2, r3]
- cmp r1, r0
- bne _080D5070
- adds r0, r2, 0
- bl move_anim_8074EE0
-_080D5070:
- pop {r0}
- bx r0
- thumb_func_end sub_80D5038
-
- thumb_func_start sub_80D5074
-sub_80D5074: @ 80D5074
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8078650
- ldr r0, _080D5098 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D50A0
- ldr r0, _080D509C @ =gBattleAnimArgs
- ldrh r1, [r4, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r4, 0x20]
- b _080D50B2
- .align 2, 0
-_080D5098: .4byte gAnimBankAttacker
-_080D509C: .4byte gBattleAnimArgs
-_080D50A0:
- ldr r0, _080D50E0 @ =gBattleAnimArgs
- ldrh r1, [r0]
- ldrh r2, [r4, 0x20]
- adds r1, r2
- strh r1, [r4, 0x20]
- adds r2, r4, 0
- adds r2, 0x43
- movs r1, 0x8
- strb r1, [r2]
-_080D50B2:
- adds r2, r0, 0
- ldrh r0, [r2, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- movs r1, 0
- strh r0, [r4, 0x22]
- ldrh r0, [r2, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r2, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r2, 0x8]
- strh r0, [r4, 0x32]
- ldrh r0, [r2, 0xA]
- strh r0, [r4, 0x34]
- ldrh r0, [r2, 0xC]
- strh r0, [r4, 0x36]
- strh r1, [r4, 0x38]
- ldr r0, _080D50E4 @ =sub_80D50E8
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D50E0: .4byte gBattleAnimArgs
-_080D50E4: .4byte sub_80D50E8
- thumb_func_end sub_80D5074
-
- thumb_func_start sub_80D50E8
-sub_80D50E8: @ 80D50E8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080D5170
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- ldr r0, _080D5154 @ =0x00002710
- cmp r1, r0
- ble _080D5106
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1
- strb r0, [r1]
-_080D5106:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x38]
- lsls r1, 16
- asrs r1, 24
- ldrh r2, [r4, 0x30]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x38]
- lsls r1, 16
- asrs r1, 24
- ldrh r2, [r4, 0x30]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x2E]
- adds r1, r0, r2
- strh r1, [r4, 0x2E]
- ldrh r0, [r4, 0x36]
- ldrh r2, [r4, 0x38]
- adds r0, r2
- strh r0, [r4, 0x38]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _080D515C
- ldr r2, _080D5158 @ =0xffffff00
- b _080D5164
- .align 2, 0
-_080D5154: .4byte 0x00002710
-_080D5158: .4byte 0xffffff00
-_080D515C:
- cmp r0, 0
- bge _080D5168
- movs r2, 0x80
- lsls r2, 1
-_080D5164:
- adds r0, r1, r2
- strh r0, [r4, 0x2E]
-_080D5168:
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- b _080D5176
-_080D5170:
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080D5176:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D50E8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fire_2.s b/asm/fire_2.s
deleted file mode 100755
index 6e8ea7ce4..000000000
--- a/asm/fire_2.s
+++ /dev/null
@@ -1,955 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ fire_2
-
- thumb_func_start sub_80D51A8
-sub_80D51A8: @ 80D51A8
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r5, _080D5200 @ =gAnimBankAttacker
- ldrb r0, [r5]
- bl GetBankSide
- adds r4, r0, 0
- ldr r0, _080D5204 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080D51EE
- movs r0, 0x2
- bl GetBankByPlayerAI
- ldrb r1, [r5]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- beq _080D51E6
- movs r0, 0x3
- bl GetBankByPlayerAI
- ldrb r1, [r5]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- bne _080D51EE
-_080D51E6:
- ldr r1, _080D5208 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080D51EE:
- ldr r1, _080D520C @ =sub_8079534
- str r1, [r6, 0x1C]
- adds r0, r6, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D5200: .4byte gAnimBankAttacker
-_080D5204: .4byte gAnimBankTarget
-_080D5208: .4byte gBattleAnimArgs
-_080D520C: .4byte sub_8079534
- thumb_func_end sub_80D51A8
-
- thumb_func_start sub_80D5210
-sub_80D5210: @ 80D5210
- ldr r2, _080D5224 @ =gBattleAnimArgs
- ldrh r1, [r2]
- negs r1, r1
- strh r1, [r2]
- ldrh r1, [r2, 0x4]
- negs r1, r1
- strh r1, [r2, 0x4]
- ldr r1, _080D5228 @ =sub_8079534
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080D5224: .4byte gBattleAnimArgs
-_080D5228: .4byte sub_8079534
- thumb_func_end sub_80D5210
-
- thumb_func_start sub_80D522C
-sub_80D522C: @ 80D522C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_80787B0
- ldr r0, _080D524C @ =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- movs r1, 0
- strh r0, [r4, 0x3C]
- strh r1, [r4, 0x2E]
- ldr r0, _080D5250 @ =sub_80D5254
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D524C: .4byte gBattleAnimArgs
-_080D5250: .4byte sub_80D5254
- thumb_func_end sub_80D522C
-
- thumb_func_start sub_80D5254
-sub_80D5254: @ 80D5254
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_80D5348
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x12
- bne _080D529E
- movs r0, 0x19
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldr r4, _080D52A4 @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r0, _080D52A8 @ =sub_80D52AC
- str r0, [r5, 0x1C]
-_080D529E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D52A4: .4byte gAnimBankTarget
-_080D52A8: .4byte sub_80D52AC
- thumb_func_end sub_80D5254
-
- thumb_func_start sub_80D52AC
-sub_80D52AC: @ 80D52AC
- push {r4-r6,lr}
- adds r6, r0, 0
- bl sub_8078B5C
- lsls r0, 24
- cmp r0, 0
- beq _080D52F4
- movs r4, 0
- strh r4, [r6, 0x2E]
- ldr r5, _080D52EC @ =gAnimBankTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x22]
- strh r4, [r6, 0x26]
- strh r4, [r6, 0x24]
- ldr r1, _080D52F0 @ =sub_80D5324
- str r1, [r6, 0x1C]
- adds r0, r6, 0
- bl _call_via_r1
- b _080D531E
- .align 2, 0
-_080D52EC: .4byte gAnimBankTarget
-_080D52F0: .4byte sub_80D5324
-_080D52F4:
- movs r1, 0x3C
- ldrsh r0, [r6, r1]
- movs r1, 0x1C
- bl Sin
- ldrh r1, [r6, 0x24]
- adds r0, r1
- strh r0, [r6, 0x24]
- movs r1, 0x3C
- ldrsh r0, [r6, r1]
- movs r1, 0x1C
- bl Cos
- ldrh r1, [r6, 0x26]
- adds r0, r1
- strh r0, [r6, 0x26]
- ldrh r0, [r6, 0x3C]
- adds r0, 0x14
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r6, 0x3C]
-_080D531E:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80D52AC
-
- thumb_func_start sub_80D5324
-sub_80D5324: @ 80D5324
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80D5348
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _080D5340
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080D5340:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D5324
-
- thumb_func_start sub_80D5348
-sub_80D5348: @ 80D5348
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- movs r1, 0x1C
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- movs r1, 0x1C
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x14
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3C]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D5348
-
- thumb_func_start sub_80D5374
-sub_80D5374: @ 80D5374
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080D53A8 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x32]
- ldr r1, _080D53AC @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- ldr r0, _080D53B0 @ =sub_8078364
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D53A8: .4byte gBattleAnimArgs
-_080D53AC: .4byte DestroyAnimSprite
-_080D53B0: .4byte sub_8078364
- thumb_func_end sub_80D5374
-
- thumb_func_start sub_80D53B4
-sub_80D53B4: @ 80D53B4
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_80787B0
- ldr r1, _080D53E8 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x2E]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080D53EC @ =sub_80782D8
- str r0, [r4, 0x1C]
- ldr r1, _080D53F0 @ =sub_80D53F4
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D53E8: .4byte gBattleAnimArgs
-_080D53EC: .4byte sub_80782D8
-_080D53F0: .4byte sub_80D53F4
- thumb_func_end sub_80D53B4
-
- thumb_func_start sub_80D53F4
-sub_80D53F4: @ 80D53F4
- push {lr}
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r3]
- ldrh r1, [r0, 0x30]
- movs r2, 0
- strh r1, [r0, 0x2E]
- strh r2, [r0, 0x30]
- ldr r1, _080D5418 @ =sub_80D541C
- str r1, [r0, 0x1C]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_080D5418: .4byte sub_80D541C
- thumb_func_end sub_80D53F4
-
- thumb_func_start sub_80D541C
-sub_80D541C: @ 80D541C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x32]
- lsls r1, 16
- asrs r1, 24
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x32]
- lsls r1, 16
- asrs r1, 24
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0xA
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- adds r0, 0xD0
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080D5468
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080D5468:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D541C
-
- thumb_func_start sub_80D5470
-sub_80D5470: @ 80D5470
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080D54D0 @ =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r4, 0x26]
- strh r5, [r4, 0x8]
- strh r5, [r4, 0xA]
- strh r5, [r4, 0xC]
- strh r5, [r4, 0xE]
- ldr r2, _080D54D4 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x22]
- strh r0, [r4, 0x10]
- ldr r0, _080D54D8 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x12]
- strh r5, [r4, 0x14]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_8078E70
- ldr r0, _080D54DC @ =sub_80D54E0
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D54D0: .4byte gTasks
-_080D54D4: .4byte gSprites
-_080D54D8: .4byte gAnimBankAttacker
-_080D54DC: .4byte sub_80D54E0
- thumb_func_end sub_80D5470
-
- thumb_func_start sub_80D54E0
-sub_80D54E0: @ 80D54E0
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080D5508 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- bls _080D54FC
- b _080D57BA
-_080D54FC:
- lsls r0, 2
- ldr r1, _080D550C @ =_080D5510
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080D5508: .4byte gTasks
-_080D550C: .4byte _080D5510
- .align 2, 0
-_080D5510:
- .4byte _080D552C
- .4byte _080D5552
- .4byte _080D5604
- .4byte _080D5664
- .4byte _080D5682
- .4byte _080D5758
- .4byte _080D57AC
-_080D552C:
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0x80
- lsls r3, 1
- movs r0, 0xE0
- str r0, [sp]
- movs r0, 0x80
- lsls r0, 2
- str r0, [sp, 0x4]
- movs r0, 0x20
- str r0, [sp, 0x8]
- adds r0, r4, 0
- adds r2, r3, 0
- bl sub_8079C08
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080D5552:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080D559A
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D5588
- ldr r2, _080D5584 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x3
- b _080D5598
- .align 2, 0
-_080D5584: .4byte gSprites
-_080D5588:
- ldr r2, _080D55FC @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _080D5600 @ =0x0000fffd
-_080D5598:
- strh r1, [r0, 0x24]
-_080D559A:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080D55C8
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080D55C8
- movs r0, 0
- strh r0, [r4, 0xE]
- ldr r2, _080D55FC @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x1
- strh r1, [r0, 0x22]
-_080D55C8:
- adds r0, r4, 0
- bl sub_8079C74
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _080D55D8
- b _080D57BA
-_080D55D8:
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8079A64
- ldr r2, _080D55FC @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x24]
- strh r5, [r4, 0xA]
- strh r5, [r4, 0xC]
- strh r5, [r4, 0xE]
- b _080D57A0
- .align 2, 0
-_080D55FC: .4byte gSprites
-_080D5600: .4byte 0x0000fffd
-_080D5604:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bgt _080D5614
- b _080D57BA
-_080D5614:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080D563E
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0x80
- lsls r3, 2
- movs r0, 0xC0
- lsls r0, 1
- str r0, [sp]
- movs r0, 0xF0
- str r0, [sp, 0x4]
- movs r0, 0x6
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r2, 0xE0
- bl sub_8079C08
- b _080D565E
-_080D563E:
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0x80
- lsls r3, 2
- movs r0, 0xC0
- lsls r0, 1
- str r0, [sp]
- movs r0, 0xC0
- str r0, [sp, 0x4]
- movs r0, 0x6
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r2, 0xE0
- bl sub_8079C08
-_080D565E:
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080D57A0
-_080D5664:
- adds r0, r4, 0
- bl sub_8079C74
- lsls r0, 24
- cmp r0, 0
- beq _080D5672
- b _080D57BA
-_080D5672:
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- adds r1, r5, 0
- movs r2, 0x6
- bl sub_80D57C4
- b _080D57A0
-_080D5682:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080D56D0
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D56BC
- ldr r2, _080D56B8 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- b _080D56CE
- .align 2, 0
-_080D56B8: .4byte gSprites
-_080D56BC:
- ldr r2, _080D5708 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- subs r1, 0x3
-_080D56CE:
- strh r1, [r0, 0x26]
-_080D56D0:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x18
- ble _080D57BA
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080D570C
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0xC0
- lsls r2, 1
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x8
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r3, 0xF0
- bl sub_8079C08
- b _080D572A
- .align 2, 0
-_080D5708: .4byte gSprites
-_080D570C:
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0xC0
- lsls r2, 1
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x8
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r3, 0xC0
- bl sub_8079C08
-_080D572A:
- ldrh r1, [r4, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D5748
- ldr r2, _080D5754 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- subs r1, 0x3
- strh r1, [r0, 0x26]
-_080D5748:
- movs r0, 0
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- b _080D57A0
- .align 2, 0
-_080D5754: .4byte gSprites
-_080D5758:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080D5774
- ldr r2, _080D57A8 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- subs r1, 0x1
- strh r1, [r0, 0x22]
-_080D5774:
- adds r0, r4, 0
- bl sub_8079C74
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080D57BA
- ldr r2, _080D57A8 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x10]
- strh r1, [r0, 0x22]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8078F40
- strh r5, [r4, 0xC]
-_080D57A0:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080D57BA
- .align 2, 0
-_080D57A8: .4byte gSprites
-_080D57AC:
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080D57BA
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080D57BA:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80D54E0
-
- thumb_func_start sub_80D57C4
-sub_80D57C4: @ 80D57C4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- adds r0, r4, 0
- bl sub_80D5940
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- ldr r1, _080D5814 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r4, [r0, 0x20]
- ldr r0, _080D5818 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080D581C
- adds r0, r4, 0
- subs r0, 0xC
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0x1
- b _080D5826
- .align 2, 0
-_080D5814: .4byte gSprites
-_080D5818: .4byte gAnimBankAttacker
-_080D581C:
- adds r0, r4, 0
- adds r0, 0x10
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0xFF
-_080D5826:
- movs r6, 0
- movs r5, 0
- lsls r4, 16
- str r4, [sp, 0x8]
- mov r1, r9
- lsls r1, 16
- str r1, [sp, 0x4]
- ldr r2, _080D58E0 @ =gUnknown_083D96DC
- mov r9, r2
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r3, r8
- lsls r3, 1
- mov r10, r3
-_080D5844:
- ldr r0, _080D58E4 @ =gSpriteTemplate_83D96C4
- ldr r2, [sp, 0x8]
- asrs r1, r2, 16
- ldr r3, [sp, 0x4]
- asrs r2, r3, 16
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080D58C6
- ldr r1, _080D58E8 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r4, r0, r1
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- lsls r0, r5, 2
- adds r0, 0x40
- adds r1, r0
- ldr r3, _080D58EC @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r3, _080D58F0 @ =0xfffffc00
- adds r0, r3, 0
- ands r2, r0
- orrs r2, r1
- strh r2, [r4, 0x4]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x4
- bls _080D588E
- movs r5, 0
-_080D588E:
- lsls r2, r6, 2
- mov r1, r9
- adds r0, r2, r1
- ldrh r0, [r0]
- ldr r3, [sp]
- adds r1, r0, 0
- muls r1, r3
- lsls r1, 16
- asrs r1, 16
- ldr r0, _080D58F4 @ =gUnknown_083D96DC + 0x2
- adds r2, r0
- movs r3, 0
- ldrsh r2, [r2, r3]
- adds r0, r4, 0
- bl sub_80D5994
- strh r7, [r4, 0x3A]
- mov r0, r8
- strh r0, [r4, 0x3C]
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- add r0, r10
- ldr r1, _080D58F8 @ =gTasks + 0x8
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- strh r1, [r0]
-_080D58C6:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x6
- bls _080D5844
- 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
-_080D58E0: .4byte gUnknown_083D96DC
-_080D58E4: .4byte gSpriteTemplate_83D96C4
-_080D58E8: .4byte gSprites
-_080D58EC: .4byte 0x000003ff
-_080D58F0: .4byte 0xfffffc00
-_080D58F4: .4byte gUnknown_083D96DC + 0x2
-_080D58F8: .4byte gTasks + 0x8
- thumb_func_end sub_80D57C4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
deleted file mode 100644
index 62792245d..000000000
--- a/asm/slot_machine.s
+++ /dev/null
@@ -1,10158 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start PlaySlotMachine
-PlaySlotMachine: @ 81018A0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_81019B0
- ldr r0, _081018B4 @ =sub_81018B8
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_081018B4: .4byte sub_81018B8
- thumb_func_end PlaySlotMachine
-
- thumb_func_start sub_81018B8
-sub_81018B8: @ 81018B8
- push {lr}
- ldr r0, _081018D0 @ =gMain
- ldr r1, _081018D4 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x6
- bhi _0810194A
- lsls r0, 2
- ldr r1, _081018D8 @ =_081018DC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081018D0: .4byte gMain
-_081018D4: .4byte 0x0000043c
-_081018D8: .4byte _081018DC
- .align 2, 0
-_081018DC:
- .4byte _081018F8
- .4byte _08101902
- .4byte _08101908
- .4byte _08101912
- .4byte _08101918
- .4byte _0810191E
- .4byte _08101938
-_081018F8:
- bl sub_8101A28
- bl sub_8101BA4
- b _08101922
-_08101902:
- bl sub_8101A8C
- b _08101922
-_08101908:
- bl sub_8101AE0
- bl sub_8101B04
- b _08101922
-_08101912:
- bl sub_8101C84
- b _08101922
-_08101918:
- bl sub_8101CA0
- b _08101922
-_0810191E:
- bl sub_8101CC0
-_08101922:
- ldr r1, _08101930 @ =gMain
- ldr r0, _08101934 @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0810194A
- .align 2, 0
-_08101930: .4byte gMain
-_08101934: .4byte 0x0000043c
-_08101938:
- bl sub_8101CD4
- bl sub_8101CEC
- bl sub_8101A44
- ldr r0, _08101950 @ =sub_8101954
- bl SetMainCallback2
-_0810194A:
- pop {r0}
- bx r0
- .align 2, 0
-_08101950: .4byte sub_8101954
- thumb_func_end sub_81018B8
-
- thumb_func_start sub_8101954
-sub_8101954: @ 8101954
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8101954
-
- thumb_func_start sub_810196C
-sub_810196C: @ 810196C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- ldr r1, _081019A8 @ =REG_WIN0H
- ldr r2, _081019AC @ =gSharedMem
- adds r0, r2, 0
- adds r0, 0x58
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x4
- adds r0, r2, 0
- adds r0, 0x5A
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x4
- adds r0, r2, 0
- adds r0, 0x5C
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r0, r2, 0
- adds r0, 0x5E
- ldrh r0, [r0]
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_081019A8: .4byte REG_WIN0H
-_081019AC: .4byte gSharedMem
- thumb_func_end sub_810196C
-
- thumb_func_start sub_81019B0
-sub_81019B0: @ 81019B0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _081019E4 @ =nullsub_67
- movs r1, 0xFF
- bl CreateTask
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _081019E8 @ =gTasks
- adds r0, r1
- strh r4, [r0, 0x8]
- adds r0, 0xA
- adds r1, r5, 0
- bl StoreWordInTwoHalfwords
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081019E4: .4byte nullsub_67
-_081019E8: .4byte gTasks
- thumb_func_end sub_81019B0
-
- thumb_func_start sub_81019EC
-sub_81019EC: @ 81019EC
- push {lr}
- ldr r0, _08101A18 @ =nullsub_67
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- ldr r0, _08101A1C @ =gTasks
- adds r2, r0
- ldr r1, _08101A20 @ =gSharedMem
- ldrh r0, [r2, 0x8]
- strb r0, [r1, 0x1]
- adds r2, 0xA
- adds r1, 0x64
- adds r0, r2, 0
- bl LoadWordFromTwoHalfwords
- pop {r0}
- bx r0
- .align 2, 0
-_08101A18: .4byte nullsub_67
-_08101A1C: .4byte gTasks
-_08101A20: .4byte gSharedMem
- thumb_func_end sub_81019EC
-
- thumb_func_start nullsub_67
-nullsub_67: @ 8101A24
- bx lr
- thumb_func_end nullsub_67
-
- thumb_func_start sub_8101A28
-sub_8101A28: @ 8101A28
- push {lr}
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- movs r1, 0x80
- lsls r1, 19
- movs r0, 0
- strh r0, [r1]
- pop {r0}
- bx r0
- thumb_func_end sub_8101A28
-
- thumb_func_start sub_8101A44
-sub_8101A44: @ 8101A44
- push {r4,lr}
- ldr r0, _08101A7C @ =sub_810196C
- bl SetVBlankCallback
- ldr r3, _08101A80 @ =0x04000208
- ldrh r2, [r3]
- movs r0, 0
- strh r0, [r3]
- ldr r4, _08101A84 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _08101A88 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xFD
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08101A7C: .4byte sub_810196C
-_08101A80: .4byte 0x04000208
-_08101A84: .4byte 0x04000200
-_08101A88: .4byte REG_DISPSTAT
- thumb_func_end sub_8101A44
-
- thumb_func_start sub_8101A8C
-sub_8101A8C: @ 8101A8C
- push {r4-r7,lr}
- sub sp, 0x4
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0x80
- lsls r3, 9
- mov r4, sp
- movs r6, 0
- ldr r1, _08101AD8 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _08101ADC @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_08101AAA:
- 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 _08101AAA
- 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]
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08101AD8: .4byte 0x040000d4
-_08101ADC: .4byte 0x81000800
- thumb_func_end sub_8101A8C
-
- thumb_func_start sub_8101AE0
-sub_8101AE0: @ 8101AE0
- sub sp, 0x4
- movs r2, 0xE0
- lsls r2, 19
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r0, _08101AFC @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08101B00 @ =0x81000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- add sp, 0x4
- bx lr
- .align 2, 0
-_08101AFC: .4byte 0x040000d4
-_08101B00: .4byte 0x81000200
- thumb_func_end sub_8101AE0
-
- thumb_func_start sub_8101B04
-sub_8101B04: @ 8101B04
- push {r4,r5,lr}
- ldr r5, _08101B70 @ =REG_BG0CNT
- movs r1, 0
- strh r1, [r5]
- ldr r2, _08101B74 @ =REG_BG1CNT
- strh r1, [r2]
- ldr r3, _08101B78 @ =REG_BG2CNT
- strh r1, [r3]
- ldr r4, _08101B7C @ =REG_BG3CNT
- strh r1, [r4]
- ldr r0, _08101B80 @ =REG_BG0HOFS
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r1, _08101B84 @ =0x00001f08
- adds r0, r1, 0
- strh r0, [r5]
- ldr r1, _08101B88 @ =0x00001c01
- adds r0, r1, 0
- strh r0, [r2]
- ldr r2, _08101B8C @ =0x00001d02
- adds r0, r2, 0
- strh r0, [r3]
- ldr r1, _08101B90 @ =0x00001e02
- adds r0, r1, 0
- strh r0, [r4]
- ldr r0, _08101B94 @ =REG_WININ
- movs r1, 0x3F
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r1, _08101B98 @ =REG_BLDCNT
- ldr r2, _08101B9C @ =0x00001048
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _08101BA0 @ =0x00000809
- adds r0, r2, 0
- strh r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08101B70: .4byte REG_BG0CNT
-_08101B74: .4byte REG_BG1CNT
-_08101B78: .4byte REG_BG2CNT
-_08101B7C: .4byte REG_BG3CNT
-_08101B80: .4byte REG_BG0HOFS
-_08101B84: .4byte 0x00001f08
-_08101B88: .4byte 0x00001c01
-_08101B8C: .4byte 0x00001d02
-_08101B90: .4byte 0x00001e02
-_08101B94: .4byte REG_WININ
-_08101B98: .4byte REG_BLDCNT
-_08101B9C: .4byte 0x00001048
-_08101BA0: .4byte 0x00000809
- thumb_func_end sub_8101B04
-
- thumb_func_start sub_8101BA4
-sub_8101BA4: @ 8101BA4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- bl sub_81019EC
- ldr r5, _08101C74 @ =gSharedMem
- movs r4, 0
- strb r4, [r5]
- strb r4, [r5, 0x2]
- bl Random
- movs r1, 0x1
- ands r1, r0
- strb r1, [r5, 0x3]
- strb r4, [r5, 0x4]
- movs r0, 0
- strh r4, [r5, 0x8]
- strb r0, [r5, 0xA]
- strb r0, [r5, 0xB]
- ldr r0, _08101C78 @ =gSaveBlock1
- ldr r1, _08101C7C @ =0x00000494
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r5, 0xC]
- strh r4, [r5, 0xE]
- strh r4, [r5, 0x10]
- strh r4, [r5, 0x12]
- strh r4, [r5, 0x18]
- movs r0, 0x8
- strh r0, [r5, 0x1A]
- adds r1, r5, 0
- adds r1, 0x58
- movs r0, 0xF0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0xA0
- strh r0, [r1]
- adds r0, r5, 0
- adds r0, 0x5C
- movs r1, 0x3F
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bl GetCurrentMapMusic
- adds r1, r5, 0
- adds r1, 0x60
- strh r0, [r1]
- movs r7, 0
- adds r6, r5, 0
- ldr r2, _08101C80 @ =gUnknown_083ECCF8
- mov r9, r2
- movs r0, 0x1C
- adds r0, r6
- mov r8, r0
-_08101C14:
- lsls r5, r7, 1
- adds r0, r6, 0
- adds r0, 0x22
- adds r0, r5, r0
- movs r1, 0
- strh r1, [r0]
- adds r4, r6, 0
- adds r4, 0x28
- adds r4, r5, r4
- ldrb r0, [r6, 0x3]
- lsls r0, 1
- lsls r1, r7, 2
- adds r0, r1
- add r0, r9
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x15
- bl __modsi3
- strh r0, [r4]
- add r5, r8
- movs r2, 0
- ldrsh r0, [r4, r2]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- movs r2, 0xFC
- lsls r2, 1
- adds r0, r2, 0
- subs r0, r1
- strh r0, [r5]
- movs r1, 0
- ldrsh r0, [r5, r1]
- adds r1, r2, 0
- bl __modsi3
- strh r0, [r5]
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x2
- bls _08101C14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08101C74: .4byte gSharedMem
-_08101C78: .4byte gSaveBlock1
-_08101C7C: .4byte 0x00000494
-_08101C80: .4byte gUnknown_083ECCF8
- thumb_func_end sub_8101BA4
-
- thumb_func_start sub_8101C84
-sub_8101C84: @ 8101C84
- push {r4,lr}
- ldr r4, _08101C9C @ =gWindowConfig_81E7128
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08101C9C: .4byte gWindowConfig_81E7128
- thumb_func_end sub_8101C84
-
- thumb_func_start sub_8101CA0
-sub_8101CA0: @ 8101CA0
- push {lr}
- bl ResetPaletteFade
- bl ResetSpriteData
- ldr r1, _08101CBC @ =gOamLimit
- movs r0, 0x80
- strb r0, [r1]
- bl FreeAllSpritePalettes
- bl ResetTasks
- pop {r0}
- bx r0
- .align 2, 0
-_08101CBC: .4byte gOamLimit
- thumb_func_end sub_8101CA0
-
- thumb_func_start sub_8101CC0
-sub_8101CC0: @ 8101CC0
- push {lr}
- bl sub_8106448
- bl sub_81064B8
- bl sub_81063C0
- pop {r0}
- bx r0
- thumb_func_end sub_8101CC0
-
- thumb_func_start sub_8101CD4
-sub_8101CD4: @ 8101CD4
- push {lr}
- bl sub_8104EA8
- bl sub_8104F8C
- bl sub_8103DC8
- bl sub_81050C4
- pop {r0}
- bx r0
- thumb_func_end sub_8101CD4
-
- thumb_func_start sub_8101CEC
-sub_8101CEC: @ 8101CEC
- push {lr}
- bl sub_8104048
- bl sub_8102DA8
- bl sub_8104C5C
- bl sub_8101D04
- pop {r0}
- bx r0
- thumb_func_end sub_8101CEC
-
- thumb_func_start sub_8101D04
-sub_8101D04: @ 8101D04
- push {r4,lr}
- ldr r4, _08101D20 @ =sub_8101D24
- adds r0, r4, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08101D20: .4byte sub_8101D24
- thumb_func_end sub_8101D04
-
- thumb_func_start sub_8101D24
-sub_8101D24: @ 8101D24
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r7, _08101D50 @ =gUnknown_083ECAAC
- lsls r1, r0, 2
- adds r1, r0
- lsls r4, r1, 3
- ldr r6, _08101D54 @ =gSharedMem
- ldr r5, _08101D58 @ =gTasks
-_08101D36:
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r7
- ldr r1, [r0]
- adds r0, r4, r5
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _08101D36
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08101D50: .4byte gUnknown_083ECAAC
-_08101D54: .4byte gSharedMem
-_08101D58: .4byte gTasks
- thumb_func_end sub_8101D24
-
- thumb_func_start sub_8101D5C
-sub_8101D5C: @ 8101D5C
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r4, _08101D88 @ =gSharedMem
- ldrb r0, [r4, 0x2]
- bl sub_810423C
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08101D88: .4byte gSharedMem
- thumb_func_end sub_8101D5C
-
- thumb_func_start sub_8101D8C
-sub_8101D8C: @ 8101D8C
- push {lr}
- ldr r0, _08101DA8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08101DA2
- ldr r1, _08101DAC @ =gSharedMem
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08101DA2:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08101DA8: .4byte gPaletteFade
-_08101DAC: .4byte gSharedMem
- thumb_func_end sub_8101D8C
-
- thumb_func_start sub_8101DB0
-sub_8101DB0: @ 8101DB0
- push {lr}
- ldr r2, _08101DD8 @ =gSharedMem
- movs r0, 0
- strh r0, [r2, 0xE]
- strh r0, [r2, 0x12]
- strh r0, [r2, 0x18]
- ldrb r1, [r2, 0x4]
- movs r0, 0xC0
- ands r0, r1
- strb r0, [r2, 0x4]
- movs r0, 0x4
- strb r0, [r2]
- movs r1, 0xC
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bgt _08101DDC
- movs r0, 0x19
- strb r0, [r2]
- b _08101DEC
- .align 2, 0
-_08101DD8: .4byte gSharedMem
-_08101DDC:
- ldrb r0, [r2, 0xA]
- cmp r0, 0
- beq _08101DEC
- movs r0, 0x3
- strb r0, [r2]
- movs r0, 0x4
- bl sub_8104CAC
-_08101DEC:
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_8101DB0
-
- thumb_func_start sub_8101DF4
-sub_8101DF4: @ 8101DF4
- push {lr}
- bl sub_8104E18
- lsls r0, 24
- cmp r0, 0
- beq _08101E06
- ldr r1, _08101E0C @ =gSharedMem
- movs r0, 0x4
- strb r0, [r1]
-_08101E06:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08101E0C: .4byte gSharedMem
- thumb_func_end sub_8101DF4
-
- thumb_func_start sub_8101E10
-sub_8101E10: @ 8101E10
- push {lr}
- movs r0, 0
- bl sub_8104CAC
- ldr r2, _08101E34 @ =gSharedMem
- movs r0, 0x5
- strb r0, [r2]
- movs r0, 0xC
- ldrsh r1, [r2, r0]
- ldr r0, _08101E38 @ =0x0000270e
- cmp r1, r0
- ble _08101E2C
- movs r0, 0x17
- strb r0, [r2]
-_08101E2C:
- movs r0, 0x1
- pop {r1}
- bx r1
- .align 2, 0
-_08101E34: .4byte gSharedMem
-_08101E38: .4byte 0x0000270e
- thumb_func_end sub_8101E10
-
- thumb_func_start sub_8101E3C
-sub_8101E3C: @ 8101E3C
- push {r4,lr}
- ldr r0, _08101E58 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08101E60
- movs r0, 0
- bl sub_8104AB8
- ldr r1, _08101E5C @ =gSharedMem
- movs r0, 0x8
- strb r0, [r1]
- b _08101F1A
- .align 2, 0
-_08101E58: .4byte gMain
-_08101E5C: .4byte gSharedMem
-_08101E60:
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _08101EC2
- ldr r2, _08101EB8 @ =gSharedMem
- movs r1, 0xC
- ldrsh r0, [r2, r1]
- subs r0, 0x3
- movs r3, 0x12
- ldrsh r1, [r2, r3]
- adds r0, r1
- cmp r0, 0
- blt _08101EBC
- ldrh r4, [r2, 0x12]
- adds r0, r1, 0
- cmp r0, 0x2
- bgt _08101E9C
-_08101E84:
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_8103D50
- lsls r0, r4, 16
- movs r2, 0x80
- lsls r2, 9
- adds r0, r2
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _08101E84
-_08101E9C:
- ldr r1, _08101EB8 @ =gSharedMem
- ldrh r0, [r1, 0xC]
- subs r0, 0x3
- ldrh r3, [r1, 0x12]
- adds r0, r3
- strh r0, [r1, 0xC]
- movs r0, 0x3
- strh r0, [r1, 0x12]
- movs r0, 0x9
- strb r0, [r1]
- movs r0, 0x5F
- bl PlaySE
- b _08101F1A
- .align 2, 0
-_08101EB8: .4byte gSharedMem
-_08101EBC:
- movs r0, 0x6
- strb r0, [r2]
- b _08101F1A
-_08101EC2:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08101EEC
- ldr r4, _08101F24 @ =gSharedMem
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08101EEC
- movs r0, 0x5F
- bl PlaySE
- ldrb r0, [r4, 0x12]
- bl sub_8103D50
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
-_08101EEC:
- ldr r0, _08101F24 @ =gSharedMem
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- ldr r2, _08101F28 @ =gMain
- adds r3, r0, 0
- cmp r1, 0x2
- bgt _08101F08
- cmp r1, 0
- beq _08101F0C
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08101F0C
-_08101F08:
- movs r0, 0x9
- strb r0, [r3]
-_08101F0C:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08101F1A
- movs r0, 0x15
- strb r0, [r3]
-_08101F1A:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08101F24: .4byte gSharedMem
-_08101F28: .4byte gMain
- thumb_func_end sub_8101E3C
-
- thumb_func_start sub_8101F2C
-sub_8101F2C: @ 8101F2C
- push {r4,lr}
- adds r4, r0, 0
- bl MenuDisplayMessageBox
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8101F2C
-
- thumb_func_start sub_8101F44
-sub_8101F44: @ 8101F44
- push {lr}
- ldr r0, _08101F58 @ =gOtherText_DontHaveThreeCoins
- bl sub_8101F2C
- ldr r1, _08101F5C @ =gSharedMem
- movs r0, 0x7
- strb r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08101F58: .4byte gOtherText_DontHaveThreeCoins
-_08101F5C: .4byte gSharedMem
- thumb_func_end sub_8101F44
-
- thumb_func_start sub_8101F60
-sub_8101F60: @ 8101F60
- push {lr}
- ldr r0, _08101F80 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08101F78
- bl MenuZeroFillScreen
- ldr r1, _08101F84 @ =gSharedMem
- movs r0, 0x5
- strb r0, [r1]
-_08101F78:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08101F80: .4byte gMain
-_08101F84: .4byte gSharedMem
- thumb_func_end sub_8101F60
-
- thumb_func_start sub_8101F88
-sub_8101F88: @ 8101F88
- push {lr}
- bl sub_8104AEC
- lsls r0, 24
- cmp r0, 0
- beq _08101F9A
- ldr r1, _08101FA0 @ =gSharedMem
- movs r0, 0x5
- strb r0, [r1]
-_08101F9A:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08101FA0: .4byte gSharedMem
- thumb_func_end sub_8101F88
-
- thumb_func_start sub_8101FA4
-sub_8101FA4: @ 8101FA4
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8102484
- bl sub_8104DA4
- movs r0, 0
- bl sub_8102DEC
- movs r0, 0x1
- bl sub_8102DEC
- movs r0, 0x2
- bl sub_8102DEC
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r4, _08101FDC @ =gSharedMem
- ldrb r1, [r4, 0x4]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08101FE0
- bl sub_810430C
- movs r0, 0xA
- b _08101FE8
- .align 2, 0
-_08101FDC: .4byte gSharedMem
-_08101FE0:
- movs r0, 0x1
- bl sub_8104CAC
- movs r0, 0xB
-_08101FE8:
- strb r0, [r4]
- ldr r4, _08102004 @ =gSharedMem
- movs r0, 0x8
- strh r0, [r4, 0x1A]
- ldrb r0, [r4, 0xA]
- cmp r0, 0
- beq _08101FFC
- bl dp15_jump_random_unknown
- strh r0, [r4, 0x1A]
-_08101FFC:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08102004: .4byte gSharedMem
- thumb_func_end sub_8101FA4
-
- thumb_func_start sub_8102008
-sub_8102008: @ 8102008
- push {lr}
- bl sub_810432C
- lsls r0, 24
- cmp r0, 0
- beq _08102028
- movs r0, 0x1
- bl sub_8104CAC
- ldr r1, _08102030 @ =gSharedMem
- ldrb r2, [r1, 0x4]
- movs r0, 0xDF
- ands r0, r2
- strb r0, [r1, 0x4]
- movs r0, 0xB
- strb r0, [r1]
-_08102028:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08102030: .4byte gSharedMem
- thumb_func_end sub_8102008
-
- thumb_func_start sub_8102034
-sub_8102034: @ 8102034
- push {lr}
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x1D
- ble _0810204E
- bl sub_81024F0
- ldr r1, _08102054 @ =gSharedMem
- movs r0, 0xC
- strb r0, [r1]
-_0810204E:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08102054: .4byte gSharedMem
- thumb_func_end sub_8102034
-
- thumb_func_start sub_8102058
-sub_8102058: @ 8102058
- push {r4,lr}
- ldr r0, _08102088 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810207E
- movs r0, 0x18
- bl PlaySE
- ldr r4, _0810208C @ =gSharedMem
- ldrb r0, [r4, 0x18]
- bl sub_8102E1C
- ldrb r0, [r4, 0x18]
- bl sub_8103C14
- movs r0, 0xD
- strb r0, [r4]
-_0810207E:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08102088: .4byte gMain
-_0810208C: .4byte gSharedMem
- thumb_func_end sub_8102058
-
- thumb_func_start sub_8102090
-sub_8102090: @ 8102090
- push {r4,lr}
- ldr r4, _081020BC @ =gSharedMem
- ldrb r0, [r4, 0x18]
- bl sub_8102E40
- lsls r0, 24
- cmp r0, 0
- bne _081020C0
- ldrh r0, [r4, 0x18]
- adds r0, 0x1
- strh r0, [r4, 0x18]
- movs r1, 0xC
- strb r1, [r4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _081020B6
- movs r0, 0xE
- strb r0, [r4]
-_081020B6:
- movs r0, 0x1
- b _081020C2
- .align 2, 0
-_081020BC: .4byte gSharedMem
-_081020C0:
- movs r0, 0
-_081020C2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8102090
-
- thumb_func_start sub_81020C8
-sub_81020C8: @ 81020C8
- push {r4,lr}
- ldr r4, _08102128 @ =gSharedMem
- ldrb r1, [r4, 0x4]
- movs r0, 0xC0
- ands r0, r1
- strb r0, [r4, 0x4]
- bl sub_81027A0
- ldrb r0, [r4, 0xA]
- cmp r0, 0
- beq _081020E8
- subs r0, 0x1
- strb r0, [r4, 0xA]
- ldrb r0, [r4, 0xB]
- adds r0, 0x1
- strb r0, [r4, 0xB]
-_081020E8:
- ldrh r0, [r4, 0x8]
- cmp r0, 0
- beq _081021B4
- movs r0, 0xF
- strb r0, [r4]
- bl sub_8102A24
- bl sub_8103F70
- ldrh r0, [r4, 0x10]
- ldrh r1, [r4, 0xE]
- subs r0, r1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bge _0810210C
- movs r0, 0
- strh r0, [r4, 0x10]
-_0810210C:
- ldrh r1, [r4, 0x8]
- movs r0, 0xC0
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _08102130
- ldr r0, _0810212C @ =0x00000185
- bl PlayFanfare
- movs r0, 0x6
- bl sub_8104CAC
- b _0810215A
- .align 2, 0
-_08102128: .4byte gSharedMem
-_0810212C: .4byte 0x00000185
-_08102130:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0810214C
- ldr r0, _08102148 @ =0x00000185
- bl PlayFanfare
- movs r0, 0x5
- bl sub_8104CAC
- b _0810215A
- .align 2, 0
-_08102148: .4byte 0x00000185
-_0810214C:
- movs r0, 0xC3
- lsls r0, 1
- bl PlayFanfare
- movs r0, 0x2
- bl sub_8104CAC
-_0810215A:
- ldr r1, _081021B0 @ =gSharedMem
- ldrh r3, [r1, 0x8]
- movs r0, 0xE0
- lsls r0, 1
- ands r0, r3
- adds r2, r1, 0
- cmp r0, 0
- beq _08102192
- ldrb r1, [r2, 0x4]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0
- strb r0, [r2, 0x4]
- movs r0, 0xC0
- lsls r0, 1
- ands r0, r3
- cmp r0, 0
- beq _08102192
- strb r1, [r2, 0xA]
- strb r1, [r2, 0xB]
- strb r1, [r2, 0x3]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r3
- cmp r0, 0
- beq _08102192
- movs r0, 0x1
- strb r0, [r2, 0x3]
-_08102192:
- ldrh r1, [r2, 0x8]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081021D2
- ldrb r0, [r2, 0x2]
- cmp r0, 0xF
- bhi _081021D2
- adds r0, 0x1
- strb r0, [r2, 0x2]
- ldrb r0, [r2, 0x2]
- bl sub_8104064
- b _081021D2
- .align 2, 0
-_081021B0: .4byte gSharedMem
-_081021B4:
- movs r0, 0x3
- bl sub_8104CAC
- movs r0, 0x14
- strb r0, [r4]
- ldrh r0, [r4, 0x12]
- ldrh r1, [r4, 0x10]
- adds r0, r1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- ldr r1, _081021DC @ =0x0000270f
- cmp r0, r1
- ble _081021D2
- strh r1, [r4, 0x10]
-_081021D2:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081021DC: .4byte 0x0000270f
- thumb_func_end sub_81020C8
-
- thumb_func_start sub_81021E0
-sub_81021E0: @ 81021E0
- push {lr}
- bl sub_8102A44
- lsls r0, 24
- cmp r0, 0
- beq _081021F2
- ldr r1, _081021F8 @ =gSharedMem
- movs r0, 0x10
- strb r0, [r1]
-_081021F2:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_081021F8: .4byte gSharedMem
- thumb_func_end sub_81021E0
-
- thumb_func_start sub_81021FC
-sub_81021FC: @ 81021FC
- push {r4,lr}
- bl sub_8103FA0
- lsls r0, 24
- cmp r0, 0
- beq _08102256
- ldr r4, _08102260 @ =gSharedMem
- movs r0, 0x13
- strb r0, [r4]
- ldrh r1, [r4, 0x8]
- movs r0, 0xC0
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _08102220
- movs r0, 0x1C
- bl IncrementGameStat
-_08102220:
- ldrh r1, [r4, 0x8]
- movs r0, 0x4
- ands r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0
- beq _08102236
- movs r0, 0
- strh r0, [r4, 0x18]
- movs r0, 0x9
- strb r0, [r4]
-_08102236:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08102242
- movs r0, 0x11
- strb r0, [r4]
-_08102242:
- ldrb r0, [r4, 0xA]
- cmp r0, 0
- beq _08102256
- cmp r2, 0
- beq _08102256
- movs r0, 0x4
- bl sub_8104CAC
- movs r0, 0x12
- strb r0, [r4]
-_08102256:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08102260: .4byte gSharedMem
- thumb_func_end sub_81021FC
-
- thumb_func_start sub_8102264
-sub_8102264: @ 8102264
- push {r4,lr}
- bl sub_81040C8
- lsls r0, 24
- cmp r0, 0
- bne _08102294
- ldr r4, _0810229C @ =gSharedMem
- movs r0, 0x13
- strb r0, [r4]
- ldrh r1, [r4, 0x8]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08102294
- movs r0, 0x9
- strb r0, [r4]
- ldrb r0, [r4, 0xA]
- cmp r0, 0
- beq _08102294
- movs r0, 0x4
- bl sub_8104CAC
- movs r0, 0x12
- strb r0, [r4]
-_08102294:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0810229C: .4byte gSharedMem
- thumb_func_end sub_8102264
-
- thumb_func_start sub_81022A0
-sub_81022A0: @ 81022A0
- push {lr}
- bl sub_8104E18
- lsls r0, 24
- cmp r0, 0
- beq _081022C0
- ldr r2, _081022C8 @ =gSharedMem
- movs r0, 0x13
- strb r0, [r2]
- ldrh r1, [r2, 0x8]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _081022C0
- movs r0, 0x9
- strb r0, [r2]
-_081022C0:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_081022C8: .4byte gSharedMem
- thumb_func_end sub_81022A0
-
- thumb_func_start sub_81022CC
-sub_81022CC: @ 81022CC
- push {lr}
- movs r0, 0
- bl sub_8103D8C
- movs r0, 0x1
- bl sub_8103D8C
- movs r0, 0x2
- bl sub_8103D8C
- ldr r1, _081022EC @ =gSharedMem
- movs r0, 0x2
- strb r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_081022EC: .4byte gSharedMem
- thumb_func_end sub_81022CC
-
- thumb_func_start sub_81022F0
-sub_81022F0: @ 81022F0
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x40
- ble _0810230C
- movs r0, 0
- strh r0, [r1, 0xA]
- ldr r1, _08102314 @ =gSharedMem
- movs r0, 0x13
- strb r0, [r1]
-_0810230C:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08102314: .4byte gSharedMem
- thumb_func_end sub_81022F0
-
- thumb_func_start sub_8102318
-sub_8102318: @ 8102318
- push {lr}
- ldr r0, _0810233C @ =gOtherText_QuitGamePrompt
- bl sub_8101F2C
- movs r0, 0x15
- movs r1, 0x7
- movs r2, 0x1
- bl DisplayYesNoMenu
- bl sub_814AB84
- ldr r1, _08102340 @ =gSharedMem
- movs r0, 0x16
- strb r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0810233C: .4byte gOtherText_QuitGamePrompt
-_08102340: .4byte gSharedMem
- thumb_func_end sub_8102318
-
- thumb_func_start sub_8102344
-sub_8102344: @ 8102344
- push {lr}
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- bne _0810237C
- bl MenuZeroFillScreen
- movs r0, 0
- bl sub_8103D8C
- movs r0, 0x1
- bl sub_8103D8C
- movs r0, 0x2
- bl sub_8103D8C
- ldr r0, _08102378 @ =gSharedMem
- ldrh r1, [r0, 0x12]
- ldrh r2, [r0, 0xC]
- adds r1, r2
- strh r1, [r0, 0xC]
- movs r1, 0x1B
- strb r1, [r0]
- b _08102392
- .align 2, 0
-_08102378: .4byte gSharedMem
-_0810237C:
- cmp r1, 0x1
- beq _08102388
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _08102392
-_08102388:
- bl MenuZeroFillScreen
- ldr r1, _08102398 @ =gSharedMem
- movs r0, 0x5
- strb r0, [r1]
-_08102392:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08102398: .4byte gSharedMem
- thumb_func_end sub_8102344
-
- thumb_func_start sub_810239C
-sub_810239C: @ 810239C
- push {lr}
- ldr r0, _081023B0 @ =gOtherText_MaxCoins
- bl sub_8101F2C
- ldr r1, _081023B4 @ =gSharedMem
- movs r0, 0x18
- strb r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_081023B0: .4byte gOtherText_MaxCoins
-_081023B4: .4byte gSharedMem
- thumb_func_end sub_810239C
-
- thumb_func_start sub_81023B8
-sub_81023B8: @ 81023B8
- push {lr}
- ldr r0, _081023D8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _081023D0
- bl MenuZeroFillScreen
- ldr r1, _081023DC @ =gSharedMem
- movs r0, 0x5
- strb r0, [r1]
-_081023D0:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_081023D8: .4byte gMain
-_081023DC: .4byte gSharedMem
- thumb_func_end sub_81023B8
-
- thumb_func_start sub_81023E0
-sub_81023E0: @ 81023E0
- push {lr}
- ldr r0, _081023F4 @ =gOtherText_OutOfCoins
- bl sub_8101F2C
- ldr r1, _081023F8 @ =gSharedMem
- movs r0, 0x1A
- strb r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_081023F4: .4byte gOtherText_OutOfCoins
-_081023F8: .4byte gSharedMem
- thumb_func_end sub_81023E0
-
- thumb_func_start sub_81023FC
-sub_81023FC: @ 81023FC
- push {lr}
- ldr r0, _0810241C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08102414
- bl MenuZeroFillScreen
- ldr r1, _08102420 @ =gSharedMem
- movs r0, 0x1B
- strb r0, [r1]
-_08102414:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0810241C: .4byte gMain
-_08102420: .4byte gSharedMem
- thumb_func_end sub_81023FC
-
- thumb_func_start sub_8102424
-sub_8102424: @ 8102424
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _08102454 @ =gSaveBlock1
- ldr r4, _08102458 @ =gSharedMem
- ldrh r1, [r4, 0xC]
- ldr r2, _0810245C @ =0x00000494
- adds r0, r2
- movs r2, 0
- strh r1, [r0]
- movs r0, 0x1
- negs r0, r0
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08102454: .4byte gSaveBlock1
-_08102458: .4byte gSharedMem
-_0810245C: .4byte 0x00000494
- thumb_func_end sub_8102424
-
- thumb_func_start sub_8102460
-sub_8102460: @ 8102460
- push {lr}
- ldr r0, _0810247C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08102476
- ldr r0, _08102480 @ =gSharedMem
- ldr r0, [r0, 0x64]
- bl SetMainCallback2
-_08102476:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0810247C: .4byte gPaletteFade
-_08102480: .4byte gSharedMem
- thumb_func_end sub_8102460
-
- thumb_func_start sub_8102484
-sub_8102484: @ 8102484
- push {r4,lr}
- ldr r4, _081024E4 @ =gSharedMem
- ldrb r0, [r4, 0xA]
- cmp r0, 0
- bne _081024DC
- ldrb r1, [r4, 0x4]
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0
- bne _081024DC
- bl sub_8102540
- lsls r0, 24
- cmp r0, 0
- beq _081024C0
- bl sub_8102578
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- beq _081024C0
- ldr r1, _081024E8 @ =gUnknown_083ECE42
- lsls r0, r3, 1
- adds r0, r1
- ldrb r1, [r0]
- ldrb r0, [r4, 0x4]
- orrs r0, r1
- strb r0, [r4, 0x4]
- cmp r3, 0x1
- bne _081024DC
-_081024C0:
- bl sub_81025BC
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x5
- beq _081024DC
- ldr r2, _081024E4 @ =gSharedMem
- ldr r1, _081024EC @ =gUnknown_083ECE48
- lsls r0, r3, 1
- adds r0, r1
- ldrb r1, [r0]
- ldrb r0, [r2, 0x4]
- orrs r0, r1
- strb r0, [r2, 0x4]
-_081024DC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081024E4: .4byte gSharedMem
-_081024E8: .4byte gUnknown_083ECE42
-_081024EC: .4byte gUnknown_083ECE48
- thumb_func_end sub_8102484
-
- thumb_func_start sub_81024F0
-sub_81024F0: @ 81024F0
- push {lr}
- ldr r1, _08102508 @ =gSharedMem
- movs r0, 0
- strb r0, [r1, 0x6]
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _08102502
- movs r0, 0x1
- strb r0, [r1, 0x6]
-_08102502:
- pop {r0}
- bx r0
- .align 2, 0
-_08102508: .4byte gSharedMem
- thumb_func_end sub_81024F0
-
- thumb_func_start sub_810250C
-sub_810250C: @ 810250C
- push {r4,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0
- movs r3, 0x1
- ldr r4, _08102528 @ =gUnknown_083ECE3A
-_08102518:
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _0810252C
- adds r0, r2, r4
- ldrb r0, [r0]
- b _0810253A
- .align 2, 0
-_08102528: .4byte gUnknown_083ECE3A
-_0810252C:
- lsrs r1, 1
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _08102518
- movs r0, 0
-_0810253A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_810250C
-
- thumb_func_start sub_8102540
-sub_8102540: @ 8102540
- push {r4,lr}
- bl Random
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _08102568 @ =gUnknown_083ECD04
- ldr r1, _0810256C @ =gSharedMem
- movs r3, 0x12
- ldrsh r2, [r1, r3]
- ldrb r3, [r1, 0x1]
- lsls r1, r3, 1
- adds r1, r3
- subs r1, 0x1
- adds r2, r1
- adds r2, r4
- ldrb r1, [r2]
- cmp r1, r0
- bhi _08102570
- movs r0, 0
- b _08102572
- .align 2, 0
-_08102568: .4byte gUnknown_083ECD04
-_0810256C: .4byte gSharedMem
-_08102570:
- movs r0, 0x1
-_08102572:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8102540
-
- thumb_func_start sub_8102578
-sub_8102578: @ 8102578
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, _081025B4 @ =gUnknown_083ECD16
-_0810257E:
- bl Random
- movs r2, 0xFF
- ldr r3, _081025B8 @ =gSharedMem
- lsls r1, r5, 16
- asrs r4, r1, 16
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 1
- ldrb r3, [r3, 0x1]
- adds r1, r3
- adds r1, r6
- ldrb r1, [r1]
- ands r2, r0
- cmp r1, r2
- bgt _081025AA
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _0810257E
-_081025AA:
- lsls r0, r5, 24
- lsrs r0, 24
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081025B4: .4byte gUnknown_083ECD16
-_081025B8: .4byte gSharedMem
- thumb_func_end sub_8102578
-
- thumb_func_start sub_81025BC
-sub_81025BC: @ 81025BC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- ldr r0, _08102600 @ =gUnknown_083ECD28
- mov r8, r0
- ldr r5, _08102604 @ =gSharedMem
- movs r7, 0x80
- lsls r7, 17
-_081025CE:
- bl Random
- movs r4, 0xFF
- ands r4, r0
- lsls r2, r6, 16
- asrs r1, r2, 16
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- ldrb r3, [r5, 0x1]
- adds r0, r3
- add r0, r8
- ldrb r3, [r0]
- cmp r1, 0
- bne _08102608
- ldrb r0, [r5, 0x3]
- cmp r0, 0x1
- bne _08102608
- adds r3, 0xA
- asrs r0, r7, 16
- cmp r3, r0
- ble _08102622
- adds r3, r0, 0
- b _08102622
- .align 2, 0
-_08102600: .4byte gUnknown_083ECD28
-_08102604: .4byte gSharedMem
-_08102608:
- asrs r0, r2, 16
- cmp r0, 0x4
- bne _08102622
- ldrb r0, [r5, 0x3]
- cmp r0, 0x1
- bne _08102622
- lsls r0, r3, 16
- ldr r1, _08102648 @ =0xfff60000
- adds r0, r1
- lsrs r3, r0, 16
- cmp r0, 0
- bge _08102622
- movs r3, 0
-_08102622:
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, r4
- bgt _08102638
- movs r3, 0x80
- lsls r3, 9
- adds r0, r2, r3
- lsrs r6, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _081025CE
-_08102638:
- lsls r0, r6, 24
- lsrs r0, 24
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08102648: .4byte 0xfff60000
- thumb_func_end sub_81025BC
-
- thumb_func_start sub_810264C
-sub_810264C: @ 810264C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r3, _08102660 @ =gSharedMem
- ldrb r0, [r3, 0x3]
- cmp r0, 0
- beq _08102668
- ldr r0, _08102664 @ =gUnknown_083ECDAC
- b _0810266A
- .align 2, 0
-_08102660: .4byte gSharedMem
-_08102664: .4byte gUnknown_083ECDAC
-_08102668:
- ldr r0, _0810267C @ =gUnknown_083ECD46
-_0810266A:
- lsls r1, r2, 4
- adds r1, r2
- ldrb r3, [r3, 0x2]
- adds r1, r3
- adds r1, r0
- ldrb r0, [r1]
- pop {r1}
- bx r1
- .align 2, 0
-_0810267C: .4byte gUnknown_083ECD46
- thumb_func_end sub_810264C
-
- thumb_func_start sub_8102680
-sub_8102680: @ 8102680
- push {r4-r6,lr}
- ldr r1, _081026A4 @ =gSharedMem
- movs r0, 0
- strb r0, [r1, 0x5]
- bl Random
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- bl sub_810264C
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _081026D2
- movs r6, 0x5
- b _081026AE
- .align 2, 0
-_081026A4: .4byte gSharedMem
-_081026A8:
- subs r0, r5, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_081026AE:
- lsls r0, r6, 16
- asrs r5, r0, 16
- cmp r5, 0
- ble _081026CE
- bl Random
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r6, 24
- lsrs r0, 24
- bl sub_810264C
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _081026A8
-_081026CE:
- ldr r0, _081026D8 @ =gSharedMem
- strb r6, [r0, 0x5]
-_081026D2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081026D8: .4byte gSharedMem
- thumb_func_end sub_8102680
-
- thumb_func_start sub_81026DC
-sub_81026DC: @ 81026DC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl Random
- movs r1, 0xFF
- ands r1, r0
- ldr r0, _081026FC @ =gUnknown_083ECE12
- lsls r4, 1
- adds r4, r0
- ldrh r4, [r4]
- cmp r1, r4
- bcc _08102700
- movs r0, 0
- b _08102702
- .align 2, 0
-_081026FC: .4byte gUnknown_083ECE12
-_08102700:
- movs r0, 0x1
-_08102702:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81026DC
-
- thumb_func_start dp15_jump_random_unknown
-dp15_jump_random_unknown: @ 8102708
- push {r4,r5,lr}
- movs r4, 0
- ldr r0, _0810271C @ =gSharedMem
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- ldr r0, _08102720 @ =0x0000012b
- cmp r1, r0
- ble _08102724
- movs r4, 0x4
- b _0810273A
- .align 2, 0
-_0810271C: .4byte gSharedMem
-_08102720: .4byte 0x0000012b
-_08102724:
- cmp r1, 0xF9
- ble _0810272C
- movs r4, 0x3
- b _0810273A
-_0810272C:
- cmp r1, 0xC7
- ble _08102734
- movs r4, 0x2
- b _0810273A
-_08102734:
- cmp r1, 0x95
- ble _0810273A
- movs r4, 0x1
-_0810273A:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r5, _0810275C @ =gUnknown_083ECE1C
- lsls r4, 2
- adds r0, r4, r5
- ldrb r0, [r0]
- cmp r1, r0
- bcs _08102760
- movs r0, 0x4
- b _0810279A
- .align 2, 0
-_0810275C: .4byte gUnknown_083ECE1C
-_08102760:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 24
- adds r2, r5, 0x2
- adds r2, r4, r2
- ldr r3, _08102790 @ =gUnknown_083ECE30
- ldr r1, _08102794 @ =gSharedMem
- ldrb r1, [r1, 0xB]
- lsls r1, 1
- adds r1, r3
- ldrb r1, [r1]
- ldrb r2, [r2]
- adds r1, r2
- lsls r1, 24
- cmp r0, r1
- bcc _08102798
- movs r0, 0x8
- b _0810279A
- .align 2, 0
-_08102790: .4byte gUnknown_083ECE30
-_08102794: .4byte gSharedMem
-_08102798:
- movs r0, 0x2
-_0810279A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end dp15_jump_random_unknown
-
- thumb_func_start sub_81027A0
-sub_81027A0: @ 81027A0
- push {r4,lr}
- ldr r4, _081027CC @ =gSharedMem
- movs r0, 0
- strh r0, [r4, 0x8]
- bl sub_81027D0
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- ble _081027B8
- bl sub_8102840
-_081027B8:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0x2
- ble _081027C4
- bl sub_810290C
-_081027C4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081027CC: .4byte gSharedMem
- thumb_func_end sub_81027A0
-
- thumb_func_start sub_81027D0
-sub_81027D0: @ 81027D0
- push {r4,r5,lr}
- movs r0, 0
- movs r1, 0x2
- bl sub_8102BA4
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x1
- movs r1, 0x2
- bl sub_8102BA4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x2
- bl sub_8102BA4
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81029D4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- beq _0810282E
- ldr r2, _08102834 @ =gSharedMem
- ldr r0, _08102838 @ =gUnknown_083ECE6C
- lsls r1, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- ldrh r3, [r2, 0xE]
- adds r0, r3
- strh r0, [r2, 0xE]
- ldr r0, _0810283C @ =gUnknown_083ECE5A
- adds r1, r0
- ldrh r0, [r2, 0x8]
- ldrh r1, [r1]
- orrs r0, r1
- strh r0, [r2, 0x8]
- movs r0, 0
- bl sub_8103E04
-_0810282E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08102834: .4byte gSharedMem
-_08102838: .4byte gUnknown_083ECE6C
-_0810283C: .4byte gUnknown_083ECE5A
- thumb_func_end sub_81027D0
-
- thumb_func_start sub_8102840
-sub_8102840: @ 8102840
- push {r4,r5,lr}
- movs r0, 0
- movs r1, 0x1
- bl sub_8102BA4
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x1
- movs r1, 0x1
- bl sub_8102BA4
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x2
- movs r1, 0x1
- bl sub_8102BA4
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81029D4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- beq _0810289E
- cmp r1, 0
- bne _0810287C
- movs r1, 0x1
-_0810287C:
- ldr r2, _08102900 @ =gSharedMem
- ldr r0, _08102904 @ =gUnknown_083ECE6C
- lsls r1, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- ldrh r3, [r2, 0xE]
- adds r0, r3
- strh r0, [r2, 0xE]
- ldr r0, _08102908 @ =gUnknown_083ECE5A
- adds r1, r0
- ldrh r0, [r2, 0x8]
- ldrh r1, [r1]
- orrs r0, r1
- strh r0, [r2, 0x8]
- movs r0, 0x1
- bl sub_8103E04
-_0810289E:
- movs r0, 0
- movs r1, 0x3
- bl sub_8102BA4
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x1
- movs r1, 0x3
- bl sub_8102BA4
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x2
- movs r1, 0x3
- bl sub_8102BA4
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81029D4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- beq _081028FA
- cmp r1, 0
- bne _081028D8
- movs r1, 0x1
-_081028D8:
- ldr r2, _08102900 @ =gSharedMem
- ldr r0, _08102904 @ =gUnknown_083ECE6C
- lsls r1, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- ldrh r3, [r2, 0xE]
- adds r0, r3
- strh r0, [r2, 0xE]
- ldr r0, _08102908 @ =gUnknown_083ECE5A
- adds r1, r0
- ldrh r0, [r2, 0x8]
- ldrh r1, [r1]
- orrs r0, r1
- strh r0, [r2, 0x8]
- movs r0, 0x2
- bl sub_8103E04
-_081028FA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08102900: .4byte gSharedMem
-_08102904: .4byte gUnknown_083ECE6C
-_08102908: .4byte gUnknown_083ECE5A
- thumb_func_end sub_8102840
-
- thumb_func_start sub_810290C
-sub_810290C: @ 810290C
- push {r4,r5,lr}
- movs r0, 0
- movs r1, 0x1
- bl sub_8102BA4
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x1
- movs r1, 0x2
- bl sub_8102BA4
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x2
- movs r1, 0x3
- bl sub_8102BA4
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81029D4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- beq _08102968
- cmp r1, 0
- beq _08102962
- ldr r2, _081029C8 @ =gSharedMem
- ldr r0, _081029CC @ =gUnknown_083ECE6C
- lsls r1, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- ldrh r3, [r2, 0xE]
- adds r0, r3
- strh r0, [r2, 0xE]
- ldr r0, _081029D0 @ =gUnknown_083ECE5A
- adds r1, r0
- ldrh r0, [r2, 0x8]
- ldrh r1, [r1]
- orrs r0, r1
- strh r0, [r2, 0x8]
-_08102962:
- movs r0, 0x3
- bl sub_8103E04
-_08102968:
- movs r0, 0
- movs r1, 0x3
- bl sub_8102BA4
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x1
- movs r1, 0x2
- bl sub_8102BA4
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x2
- movs r1, 0x1
- bl sub_8102BA4
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81029D4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- beq _081029C2
- cmp r1, 0
- beq _081029BC
- ldr r2, _081029C8 @ =gSharedMem
- ldr r0, _081029CC @ =gUnknown_083ECE6C
- lsls r1, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- ldrh r3, [r2, 0xE]
- adds r0, r3
- strh r0, [r2, 0xE]
- ldr r0, _081029D0 @ =gUnknown_083ECE5A
- adds r1, r0
- ldrh r0, [r2, 0x8]
- ldrh r1, [r1]
- orrs r0, r1
- strh r0, [r2, 0x8]
-_081029BC:
- movs r0, 0x4
- bl sub_8103E04
-_081029C2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081029C8: .4byte gSharedMem
-_081029CC: .4byte gUnknown_083ECE6C
-_081029D0: .4byte gUnknown_083ECE5A
- thumb_func_end sub_810290C
-
- thumb_func_start sub_81029D4
-sub_81029D4: @ 81029D4
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- cmp r3, r1
- bne _081029F8
- cmp r3, r2
- bne _081029F8
- ldr r0, _081029F4 @ =gUnknown_083ECE52
- adds r0, r3, r0
- ldrb r0, [r0]
- b _08102A1E
- .align 2, 0
-_081029F4: .4byte gUnknown_083ECE52
-_081029F8:
- cmp r3, 0
- bne _08102A04
- cmp r1, 0
- bne _08102A04
- cmp r2, 0x1
- beq _08102A10
-_08102A04:
- cmp r3, 0x1
- bne _08102A14
- cmp r1, 0x1
- bne _08102A14
- cmp r2, 0
- bne _08102A14
-_08102A10:
- movs r0, 0x6
- b _08102A1E
-_08102A14:
- cmp r3, 0x4
- beq _08102A1C
- movs r0, 0x9
- b _08102A1E
-_08102A1C:
- movs r0, 0
-_08102A1E:
- pop {r1}
- bx r1
- thumb_func_end sub_81029D4
-
- thumb_func_start sub_8102A24
-sub_8102A24: @ 8102A24
- push {r4,lr}
- ldr r4, _08102A40 @ =sub_8102A64
- adds r0, r4, 0
- movs r1, 0x4
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08102A40: .4byte sub_8102A64
- thumb_func_end sub_8102A24
-
- thumb_func_start sub_8102A44
-sub_8102A44: @ 8102A44
- push {lr}
- ldr r0, _08102A58 @ =sub_8102A64
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _08102A5C
- movs r0, 0
- b _08102A5E
- .align 2, 0
-_08102A58: .4byte sub_8102A64
-_08102A5C:
- movs r0, 0x1
-_08102A5E:
- pop {r1}
- bx r1
- thumb_func_end sub_8102A44
-
- thumb_func_start sub_8102A64
-sub_8102A64: @ 8102A64
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _08102A94 @ =gUnknown_083ECB20
- ldr r2, _08102A98 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08102A76:
- 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 _08102A76
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08102A94: .4byte gUnknown_083ECB20
-_08102A98: .4byte gTasks
- thumb_func_end sub_8102A64
-
- thumb_func_start sub_8102A9C
-sub_8102A9C: @ 8102A9C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8103E38
- lsls r0, 24
- cmp r0, 0
- beq _08102AC8
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- ldr r0, _08102AC4 @ =gSharedMem
- movs r1, 0xE
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08102AC8
- movs r0, 0x2
- strh r0, [r4, 0x8]
- movs r0, 0x1
- b _08102ACA
- .align 2, 0
-_08102AC4: .4byte gSharedMem
-_08102AC8:
- movs r0, 0
-_08102ACA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8102A9C
-
- thumb_func_start sub_8102AD0
-sub_8102AD0: @ 8102AD0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _08102B22
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08102AF6
- movs r0, 0x15
- bl PlaySE
-_08102AF6:
- ldr r2, _08102B70 @ =gSharedMem
- ldrh r0, [r2, 0xE]
- subs r0, 0x1
- strh r0, [r2, 0xE]
- ldrh r3, [r2, 0xC]
- movs r0, 0xC
- ldrsh r1, [r2, r0]
- ldr r0, _08102B74 @ =0x0000270e
- cmp r1, r0
- bgt _08102B0E
- adds r0, r3, 0x1
- strh r0, [r2, 0xC]
-_08102B0E:
- movs r0, 0x8
- strh r0, [r4, 0xA]
- ldr r0, _08102B78 @ =gMain
- ldrh r1, [r0, 0x2C]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08102B22
- movs r0, 0x4
- strh r0, [r4, 0xA]
-_08102B22:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08102B58
- ldr r0, _08102B78 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08102B58
- movs r0, 0x15
- bl PlaySE
- ldr r1, _08102B70 @ =gSharedMem
- ldrh r0, [r1, 0xE]
- ldrh r2, [r1, 0xC]
- adds r0, r2
- strh r0, [r1, 0xC]
- lsls r0, 16
- asrs r0, 16
- ldr r2, _08102B7C @ =0x0000270f
- cmp r0, r2
- ble _08102B54
- strh r2, [r1, 0xC]
-_08102B54:
- movs r0, 0
- strh r0, [r1, 0xE]
-_08102B58:
- ldr r0, _08102B70 @ =gSharedMem
- movs r1, 0xE
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08102B68
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_08102B68:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08102B70: .4byte gSharedMem
-_08102B74: .4byte 0x0000270e
-_08102B78: .4byte gMain
-_08102B7C: .4byte 0x0000270f
- thumb_func_end sub_8102AD0
-
- thumb_func_start sub_8102B80
-sub_8102B80: @ 8102B80
- push {lr}
- bl sub_8103E7C
- lsls r0, 24
- cmp r0, 0
- beq _08102B9A
- ldr r0, _08102BA0 @ =sub_8102A64
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_08102B9A:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08102BA0: .4byte sub_8102A64
- thumb_func_end sub_8102B80
-
- thumb_func_start sub_8102BA4
-sub_8102BA4: @ 8102BA4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r0, _08102BF0 @ =gSharedMem
- lsls r2, r4, 1
- adds r0, 0x28
- adds r2, r0
- movs r3, 0
- ldrsh r0, [r2, r3]
- lsls r1, 16
- asrs r1, 16
- adds r0, r1
- movs r1, 0x15
- bl __modsi3
- lsls r0, 16
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _08102BD4
- adds r0, 0x15
- lsls r0, 16
- lsrs r1, r0, 16
-_08102BD4:
- ldr r2, _08102BF4 @ =gUnknown_083ECCB2
- lsls r1, 16
- asrs r1, 16
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 2
- adds r0, r4
- adds r1, r0
- adds r1, r2
- ldrb r0, [r1]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08102BF0: .4byte gSharedMem
-_08102BF4: .4byte gUnknown_083ECCB2
- thumb_func_end sub_8102BA4
-
- thumb_func_start sub_8102BF8
-sub_8102BF8: @ 8102BF8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r1, 16
- lsrs r4, r1, 16
- movs r6, 0
- ldr r0, _08102C40 @ =gSharedMem
- lsls r1, r5, 1
- adds r0, 0x1C
- adds r1, r0
- movs r2, 0
- ldrsh r0, [r1, r2]
- movs r1, 0x18
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- beq _08102C20
- ldr r6, _08102C44 @ =0x0000ffff
-_08102C20:
- lsls r1, r4, 16
- asrs r1, 16
- lsls r0, r6, 16
- asrs r0, 16
- adds r1, r0
- lsls r1, 16
- asrs r1, 16
- adds r0, r5, 0
- bl sub_8102BA4
- lsls r0, 24
- lsrs r0, 24
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08102C40: .4byte gSharedMem
-_08102C44: .4byte 0x0000ffff
- thumb_func_end sub_8102BF8
-
- thumb_func_start sub_8102C48
-sub_8102C48: @ 8102C48
- push {lr}
- ldr r1, _08102C7C @ =gSharedMem
- movs r2, 0x16
- ldrsh r1, [r1, r2]
- lsls r0, 16
- asrs r0, 16
- adds r1, r0
- adds r0, r1, 0
- movs r1, 0x6
- bl __modsi3
- lsls r0, 16
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _08102C6E
- adds r0, 0x6
- lsls r0, 16
- lsrs r1, r0, 16
-_08102C6E:
- ldr r0, _08102C80 @ =gUnknown_083ECCF1
- lsls r1, 16
- asrs r1, 16
- adds r1, r0
- ldrb r0, [r1]
- pop {r1}
- bx r1
- .align 2, 0
-_08102C7C: .4byte gSharedMem
-_08102C80: .4byte gUnknown_083ECCF1
- thumb_func_end sub_8102C48
-
- thumb_func_start sub_8102C84
-sub_8102C84: @ 8102C84
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- ldr r6, _08102CC8 @ =gSharedMem
- lsrs r5, 23
- adds r4, r6, 0
- adds r4, 0x1C
- adds r4, r5, r4
- lsls r1, 16
- asrs r1, 16
- ldrh r0, [r4]
- adds r1, r0
- strh r1, [r4]
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0xFC
- lsls r1, 1
- bl __modsi3
- strh r0, [r4]
- adds r6, 0x28
- adds r5, r6
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0x18
- bl __divsi3
- movs r1, 0x15
- subs r1, r0
- strh r1, [r5]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08102CC8: .4byte gSharedMem
- thumb_func_end sub_8102C84
-
- thumb_func_start sub_8102CCC
-sub_8102CCC: @ 8102CCC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- lsls r1, 16
- lsrs r4, r1, 16
- ldr r0, _08102D24 @ =gSharedMem
- lsls r1, r6, 1
- adds r0, 0x1C
- adds r5, r1, r0
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r1, 0x18
- bl __modsi3
- lsls r0, 16
- lsrs r0, 16
- lsls r2, r0, 16
- asrs r1, r2, 16
- cmp r1, 0
- beq _08102D18
- lsls r0, r4, 16
- asrs r0, 16
- cmp r1, r0
- bge _08102D00
- lsrs r4, r2, 16
-_08102D00:
- lsls r1, r4, 16
- asrs r1, 16
- adds r0, r6, 0
- bl sub_8102C84
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r1, 0x18
- bl __modsi3
- lsls r0, 16
- lsrs r0, 16
-_08102D18:
- lsls r0, 16
- asrs r0, 16
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08102D24: .4byte gSharedMem
- thumb_func_end sub_8102CCC
-
- thumb_func_start sub_8102D28
-sub_8102D28: @ 8102D28
- push {r4,lr}
- ldr r4, _08102D58 @ =gSharedMem
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r4, 0x14]
- adds r0, r1
- strh r0, [r4, 0x14]
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- movs r1, 0x78
- bl __modsi3
- strh r0, [r4, 0x14]
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- movs r1, 0x14
- bl __divsi3
- movs r1, 0x6
- subs r1, r0
- strh r1, [r4, 0x16]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08102D58: .4byte gSharedMem
- thumb_func_end sub_8102D28
-
- thumb_func_start sub_8102D5C
-sub_8102D5C: @ 8102D5C
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r5, _08102DA4 @ =gSharedMem
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- movs r1, 0x14
- bl __modsi3
- lsls r0, 16
- lsrs r0, 16
- lsls r2, r0, 16
- asrs r1, r2, 16
- cmp r1, 0
- beq _08102D9A
- lsls r0, r4, 16
- asrs r0, 16
- cmp r1, r0
- bge _08102D84
- lsrs r4, r2, 16
-_08102D84:
- lsls r0, r4, 16
- asrs r0, 16
- bl sub_8102D28
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- movs r1, 0x14
- bl __modsi3
- lsls r0, 16
- lsrs r0, 16
-_08102D9A:
- lsls r0, 16
- asrs r0, 16
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08102DA4: .4byte gSharedMem
- thumb_func_end sub_8102D5C
-
- thumb_func_start sub_8102DA8
-sub_8102DA8: @ 8102DA8
- push {r4-r7,lr}
- movs r4, 0
- ldr r5, _08102DE0 @ =sub_8102E68
- ldr r7, _08102DE4 @ =gTasks
- ldr r6, _08102DE8 @ =gSharedMem + 0x3A
-_08102DB2:
- adds r0, r5, 0
- movs r1, 0x2
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r7
- strh r4, [r1, 0x26]
- adds r1, r4, r6
- strb r0, [r1]
- bl _call_via_r5
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _08102DB2
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08102DE0: .4byte sub_8102E68
-_08102DE4: .4byte gTasks
-_08102DE8: .4byte gSharedMem + 0x3A
- thumb_func_end sub_8102DA8
-
- thumb_func_start sub_8102DEC
-sub_8102DEC: @ 8102DEC
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _08102E14 @ =gTasks
- ldr r1, _08102E18 @ =gSharedMem
- adds r1, 0x3A
- adds r0, r1
- ldrb r2, [r0]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r3
- movs r2, 0x1
- strh r2, [r1, 0x8]
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- strh r2, [r0, 0x24]
- bx lr
- .align 2, 0
-_08102E14: .4byte gTasks
-_08102E18: .4byte gSharedMem
- thumb_func_end sub_8102DEC
-
- thumb_func_start sub_8102E1C
-sub_8102E1C: @ 8102E1C
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08102E38 @ =gTasks
- ldr r1, _08102E3C @ =gSharedMem
- adds r1, 0x3A
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x2
- strh r1, [r0, 0x8]
- bx lr
- .align 2, 0
-_08102E38: .4byte gTasks
-_08102E3C: .4byte gSharedMem
- thumb_func_end sub_8102E1C
-
- thumb_func_start sub_8102E40
-sub_8102E40: @ 8102E40
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08102E60 @ =gTasks
- ldr r1, _08102E64 @ =gSharedMem
- adds r1, 0x3A
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r0, [r0, 0x24]
- lsls r0, 24
- lsrs r0, 24
- bx lr
- .align 2, 0
-_08102E60: .4byte gTasks
-_08102E64: .4byte gSharedMem
- thumb_func_end sub_8102E40
-
- thumb_func_start sub_8102E68
-sub_8102E68: @ 8102E68
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _08102E98 @ =gUnknown_083ECB2C
- ldr r2, _08102E9C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08102E7A:
- 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 _08102E7A
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08102E98: .4byte gUnknown_083ECB2C
-_08102E9C: .4byte gTasks
- thumb_func_end sub_8102E68
-
- thumb_func_start sub_8102EA0
-sub_8102EA0: @ 8102EA0
- movs r0, 0
- bx lr
- thumb_func_end sub_8102EA0
-
- thumb_func_start sub_8102EA4
-sub_8102EA4: @ 8102EA4
- push {lr}
- ldrh r0, [r0, 0x26]
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08102EBC @ =gSharedMem
- movs r2, 0x1A
- ldrsh r1, [r1, r2]
- bl sub_8102C84
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08102EBC: .4byte gSharedMem
- thumb_func_end sub_8102EA4
-
- thumb_func_start sub_8102EC0
-sub_8102EC0: @ 8102EC0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r2, 0
- strh r0, [r4, 0x8]
- ldr r3, _08102F40 @ =gSharedMem
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r0, 1
- adds r1, r3, 0
- adds r1, 0x34
- adds r0, r1
- strh r2, [r0]
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r0, 1
- adds r1, r3, 0
- adds r1, 0x2E
- adds r0, r1
- strh r2, [r0]
- ldrb r0, [r3, 0xA]
- cmp r0, 0
- bne _08102F28
- ldrb r0, [r3, 0x4]
- cmp r0, 0
- beq _08102F12
- ldrb r0, [r3, 0x6]
- cmp r0, 0
- beq _08102F12
- ldr r1, _08102F44 @ =gUnknown_083ECB40
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- cmp r0, 0
- bne _08102F28
-_08102F12:
- ldr r1, _08102F40 @ =gSharedMem
- movs r0, 0
- strb r0, [r1, 0x6]
- ldr r1, _08102F48 @ =gUnknown_083ECB4C
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
-_08102F28:
- ldr r0, _08102F40 @ =gSharedMem
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- lsls r1, 1
- adds r0, 0x2E
- adds r1, r0
- ldrh r0, [r1]
- strh r0, [r4, 0xA]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08102F40: .4byte gSharedMem
-_08102F44: .4byte gUnknown_083ECB40
-_08102F48: .4byte gUnknown_083ECB4C
- thumb_func_end sub_8102EC0
-
- thumb_func_start sub_8102F4C
-sub_8102F4C: @ 8102F4C
- push {r4-r7,lr}
- sub sp, 0xC
- adds r4, r0, 0
- ldr r1, _08102F8C @ =gUnknown_083ECB58
- mov r0, sp
- movs r2, 0xA
- bl memcpy
- ldr r5, _08102F90 @ =gSharedMem
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r6, r0, 1
- adds r7, r5, 0
- adds r7, 0x1C
- adds r0, r6, r7
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0x18
- bl __modsi3
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r0, 0
- beq _08102F94
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0x1A
- ldrsh r1, [r5, r6]
- bl sub_8102CCC
- b _08102FC8
- .align 2, 0
-_08102F8C: .4byte gUnknown_083ECB58
-_08102F90: .4byte gSharedMem
-_08102F94:
- adds r0, r5, 0
- adds r0, 0x2E
- adds r1, r6, r0
- ldrh r3, [r1]
- movs r6, 0
- ldrsh r0, [r1, r6]
- cmp r0, 0
- beq _08102FCC
- subs r0, r3, 0x1
- strh r0, [r1]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x1A
- ldrsh r1, [r5, r2]
- bl sub_8102C84
- movs r6, 0x26
- ldrsh r0, [r4, r6]
- lsls r0, 1
- adds r0, r7
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x18
- bl __modsi3
-_08102FC8:
- lsls r0, 16
- lsrs r2, r0, 16
-_08102FCC:
- cmp r2, 0
- bne _08102FF8
- ldr r1, _08103004 @ =gSharedMem
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r1, 0x2E
- adds r0, r1
- movs r6, 0
- ldrsh r1, [r0, r6]
- cmp r1, 0
- bne _08102FF8
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0xA]
- strh r1, [r4, 0xC]
-_08102FF8:
- movs r0, 0
- add sp, 0xC
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08103004: .4byte gSharedMem
- thumb_func_end sub_8102F4C
-
- thumb_func_start sub_8103008
-sub_8103008: @ 8103008
- push {r4,lr}
- adds r2, r0, 0
- ldr r1, _08103058 @ =gSharedMem
- movs r3, 0x26
- ldrsh r0, [r2, r3]
- lsls r0, 1
- adds r4, r1, 0
- adds r4, 0x22
- adds r0, r4
- ldrh r1, [r2, 0xA]
- strh r1, [r0]
- ldrh r0, [r2, 0xA]
- negs r3, r0
- strh r3, [r2, 0xA]
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- movs r1, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08103038
- lsls r0, r3, 16
- asrs r0, 17
- strh r0, [r2, 0xA]
-_08103038:
- movs r0, 0xA
- ldrsh r3, [r2, r0]
- cmp r3, 0
- bne _0810304E
- strh r3, [r2, 0x8]
- strh r3, [r2, 0x24]
- movs r1, 0x26
- ldrsh r0, [r2, r1]
- lsls r0, 1
- adds r0, r4
- strh r3, [r0]
-_0810304E:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08103058: .4byte gSharedMem
- thumb_func_end sub_8103008
-
- thumb_func_start sub_810305C
-sub_810305C: @ 810305C
- push {r4,r5,lr}
- ldr r4, _0810309C @ =gSharedMem
- ldrb r0, [r4, 0x4]
- bl sub_810250C
- lsls r0, 24
- lsrs r3, r0, 24
- adds r5, r3, 0
- ldrb r1, [r4, 0x4]
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0
- beq _0810307A
- movs r5, 0
- movs r3, 0x1
-_0810307A:
- ldr r1, _081030A0 @ =gUnknown_083ECB64
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- subs r0, 0x1
- lsls r0, 2
- adds r0, r1
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r3, 0
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0810309C: .4byte gSharedMem
-_081030A0: .4byte gUnknown_083ECB64
- thumb_func_end sub_810305C
-
- thumb_func_start sub_81030A4
-sub_81030A4: @ 81030A4
- push {r4,r5,lr}
- adds r3, r0, 0
- adds r4, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r5, r2, 24
- lsls r3, 16
- asrs r3, 16
- movs r0, 0
- adds r1, r3, 0
- bl sub_8102BF8
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, r4
- beq _081030CC
- cmp r0, r5
- bne _081030D8
-_081030CC:
- ldr r0, _081030D4 @ =gSharedMem
- strb r1, [r0, 0x7]
- movs r0, 0x1
- b _081030DA
- .align 2, 0
-_081030D4: .4byte gSharedMem
-_081030D8:
- movs r0, 0
-_081030DA:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81030A4
-
- thumb_func_start sub_81030E0
-sub_81030E0: @ 81030E0
- push {r4,lr}
- movs r1, 0x1
- lsls r0, 16
- asrs r4, r0, 16
- subs r1, r4
- lsls r1, 16
- asrs r1, 16
- movs r0, 0
- bl sub_8102BF8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- beq _08103128
- movs r1, 0x2
- subs r1, r4
- lsls r1, 16
- asrs r1, 16
- movs r0, 0
- bl sub_8102BF8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- beq _08103128
- movs r1, 0x3
- subs r1, r4
- lsls r1, 16
- asrs r1, 16
- movs r0, 0
- bl sub_8102BF8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _0810312C
-_08103128:
- movs r0, 0x1
- b _0810312E
-_0810312C:
- movs r0, 0
-_0810312E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81030E0
-
- thumb_func_start sub_8103134
-sub_8103134: @ 8103134
- push {lr}
- ldr r0, _08103148 @ =gSharedMem
- ldrb r1, [r0, 0x4]
- movs r0, 0xC2
- ands r0, r1
- cmp r0, 0
- bne _0810314C
- movs r0, 0
- b _0810314E
- .align 2, 0
-_08103148: .4byte gSharedMem
-_0810314C:
- movs r0, 0x1
-_0810314E:
- pop {r1}
- bx r1
- thumb_func_end sub_8103134
-
- thumb_func_start sub_8103154
-sub_8103154: @ 8103154
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r7, r1, 24
- movs r5, 0
- movs r0, 0x2
- mov r9, r0
- ldr r6, _08103194 @ =gSharedMem
-_0810316E:
- lsls r0, r5, 16
- asrs r4, r0, 16
- mov r1, r9
- subs r0, r1, r4
- lsls r0, 16
- asrs r0, 16
- mov r1, r8
- adds r2, r7, 0
- bl sub_81030A4
- lsls r0, 24
- cmp r0, 0
- beq _08103198
- movs r0, 0x2
- strh r0, [r6, 0x34]
- strh r5, [r6, 0x2E]
- movs r0, 0x1
- b _081031A6
- .align 2, 0
-_08103194: .4byte gSharedMem
-_08103198:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _0810316E
- movs r0, 0
-_081031A6:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8103154
-
- thumb_func_start sub_81031B4
-sub_81031B4: @ 81031B4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- bl sub_8103134
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _081031E2
- movs r0, 0
- bl sub_81030E0
- lsls r0, 24
- cmp r0, 0
- bne _0810321E
-_081031E2:
- movs r0, 0x1
- mov r8, r0
- ldr r5, _0810320C @ =gSharedMem
- movs r7, 0
-_081031EA:
- mov r1, r8
- lsls r0, r1, 16
- asrs r4, r0, 16
- adds r0, r4, 0
- mov r1, r10
- mov r2, r9
- bl sub_81030A4
- lsls r0, 24
- cmp r0, 0
- beq _08103210
- mov r0, r8
- strh r0, [r5, 0x34]
- strh r7, [r5, 0x2E]
- movs r0, 0x1
- b _081032B2
- .align 2, 0
-_0810320C: .4byte gSharedMem
-_08103210:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- mov r8, r1
- asrs r0, 16
- cmp r0, 0x3
- ble _081031EA
-_0810321E:
- movs r0, 0x1
- mov r8, r0
- adds r7, r6, 0
- ldr r6, _0810326C @ =gSharedMem
-_08103226:
- mov r1, r8
- lsls r5, r1, 16
- cmp r7, 0
- bne _0810323A
- asrs r0, r5, 16
- bl sub_81030E0
- lsls r0, 24
- cmp r0, 0
- bne _081032A0
-_0810323A:
- movs r0, 0x1
- asrs r4, r5, 16
- subs r0, r4
- lsls r0, 16
- asrs r0, 16
- mov r1, r10
- mov r2, r9
- bl sub_81030A4
- lsls r0, 24
- cmp r0, 0
- beq _081032A0
- cmp r4, 0x1
- bne _08103270
- cmp r7, 0
- bne _08103266
- movs r0, 0x3
- bl sub_81030E0
- lsls r0, 24
- cmp r0, 0
- bne _08103270
-_08103266:
- movs r0, 0x3
- strh r0, [r6, 0x34]
- b _0810329A
- .align 2, 0
-_0810326C: .4byte gSharedMem
-_08103270:
- asrs r0, r5, 16
- cmp r0, 0x3
- bgt _08103294
- adds r4, r0, 0x1
- cmp r7, 0
- bne _0810328A
- lsls r0, r4, 16
- asrs r0, 16
- bl sub_81030E0
- lsls r0, 24
- cmp r0, 0
- bne _08103294
-_0810328A:
- movs r0, 0x2
- strh r0, [r6, 0x34]
- strh r4, [r6, 0x2E]
- movs r0, 0x1
- b _081032B2
-_08103294:
- movs r0, 0x1
- strh r0, [r6, 0x34]
- mov r0, r8
-_0810329A:
- strh r0, [r6, 0x2E]
- movs r0, 0x1
- b _081032B2
-_081032A0:
- movs r1, 0x80
- lsls r1, 9
- adds r0, r5, r1
- lsrs r1, r0, 16
- mov r8, r1
- asrs r0, 16
- cmp r0, 0x4
- ble _08103226
- movs r0, 0
-_081032B2:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81031B4
-
- thumb_func_start sub_81032C0
-sub_81032C0: @ 81032C0
- push {lr}
- ldr r1, _081032E0 @ =gUnknown_083ECB70
- ldr r0, _081032E4 @ =gSharedMem
- movs r2, 0x12
- ldrsh r0, [r0, r2]
- subs r0, 0x1
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_081032E0: .4byte gUnknown_083ECB70
-_081032E4: .4byte gSharedMem
- thumb_func_end sub_81032C0
-
- thumb_func_start sub_81032E8
-sub_81032E8: @ 81032E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _08103320 @ =gSharedMem
- movs r6, 0
- ldrh r1, [r0, 0x34]
- mov r8, r1
- movs r1, 0x34
- ldrsh r7, [r0, r1]
- adds r5, r0, 0
-_081032FC:
- lsls r0, r6, 16
- asrs r4, r0, 16
- subs r1, r7, r4
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x1
- bl sub_8102BF8
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r5, 0x7]
- cmp r0, r1
- bne _08103324
- mov r0, r8
- strh r0, [r5, 0x36]
- strh r6, [r5, 0x30]
- movs r0, 0x1
- b _08103332
- .align 2, 0
-_08103320: .4byte gSharedMem
-_08103324:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _081032FC
- movs r0, 0
-_08103332:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81032E8
-
- thumb_func_start sub_810333C
-sub_810333C: @ 810333C
- push {r4-r7,lr}
- bl sub_81032E8
- lsls r0, 24
- cmp r0, 0
- beq _0810339A
- ldr r1, _0810338C @ =gSharedMem
- movs r2, 0x34
- ldrsh r0, [r1, r2]
- cmp r0, 0x2
- beq _08103396
- movs r2, 0x30
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- ble _08103396
- cmp r0, 0x4
- beq _08103396
- movs r5, 0
- movs r7, 0x2
- adds r6, r1, 0
-_08103364:
- lsls r0, r5, 16
- asrs r4, r0, 16
- subs r1, r7, r4
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x1
- bl sub_8102BF8
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r6, 0x7]
- cmp r0, r1
- beq _08103390
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _08103364
- b _08103396
- .align 2, 0
-_0810338C: .4byte gSharedMem
-_08103390:
- movs r0, 0x2
- strh r0, [r6, 0x36]
- strh r5, [r6, 0x30]
-_08103396:
- movs r0, 0x1
- b _081033D2
-_0810339A:
- ldr r1, _081033D8 @ =gSharedMem
- movs r2, 0x34
- ldrsh r0, [r1, r2]
- cmp r0, 0x2
- beq _081033D0
- movs r5, 0
- movs r7, 0x2
- adds r6, r1, 0
-_081033AA:
- lsls r0, r5, 16
- asrs r4, r0, 16
- subs r1, r7, r4
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x1
- bl sub_8102BF8
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r6, 0x7]
- cmp r0, r1
- beq _08103390
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _081033AA
-_081033D0:
- movs r0, 0
-_081033D2:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081033D8: .4byte gSharedMem
- thumb_func_end sub_810333C
-
- thumb_func_start sub_81033DC
-sub_81033DC: @ 81033DC
- push {r4,lr}
- ldr r0, _08103414 @ =gSharedMem
- ldrb r3, [r0, 0x7]
- adds r4, r3, 0
- ldrb r2, [r0, 0x4]
- movs r1, 0x40
- ands r1, r2
- cmp r1, 0
- beq _081033F6
- movs r3, 0
- cmp r4, 0
- bne _081033F6
- movs r3, 0x1
-_081033F6:
- ldr r1, _08103418 @ =gUnknown_083ECB7C
- movs r2, 0x12
- ldrsh r0, [r0, r2]
- subs r0, 0x1
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r3, 0
- bl _call_via_r1
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08103414: .4byte gSharedMem
-_08103418: .4byte gUnknown_083ECB7C
- thumb_func_end sub_81033DC
-
- thumb_func_start sub_810341C
-sub_810341C: @ 810341C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, _0810345C @ =gSharedMem
- movs r5, 0
- ldrh r1, [r0, 0x36]
- mov r8, r1
- movs r1, 0x36
- ldrsh r7, [r0, r1]
- adds r6, r0, 0
-_08103438:
- lsls r0, r5, 16
- asrs r4, r0, 16
- subs r1, r7, r4
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x2
- bl sub_8102BF8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r9
- bne _08103460
- mov r0, r8
- strh r0, [r6, 0x38]
- strh r5, [r6, 0x32]
- movs r0, 0x1
- b _0810346E
- .align 2, 0
-_0810345C: .4byte gSharedMem
-_08103460:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _08103438
- movs r0, 0
-_0810346E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_810341C
-
- thumb_func_start sub_810347C
-sub_810347C: @ 810347C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _081034A0 @ =gSharedMem
- movs r2, 0x34
- ldrsh r1, [r0, r2]
- movs r2, 0x36
- ldrsh r0, [r0, r2]
- cmp r1, r0
- bne _081034B4
- adds r0, r6, 0
- bl sub_810341C
- lsls r0, 24
- lsrs r0, 24
- b _081034EA
- .align 2, 0
-_081034A0: .4byte gSharedMem
-_081034A4:
- ldr r0, _081034B0 @ =gSharedMem
- strh r5, [r0, 0x32]
- mov r1, r8
- strh r1, [r0, 0x38]
- movs r0, 0x1
- b _081034EA
- .align 2, 0
-_081034B0: .4byte gSharedMem
-_081034B4:
- movs r2, 0x1
- mov r8, r2
- cmp r1, 0x1
- bne _081034C0
- movs r0, 0x3
- mov r8, r0
-_081034C0:
- movs r5, 0
- mov r7, r8
-_081034C4:
- lsls r0, r5, 16
- asrs r4, r0, 16
- subs r1, r7, r4
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x2
- bl sub_8102BF8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r6
- beq _081034A4
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _081034C4
- movs r0, 0
-_081034EA:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_810347C
-
- thumb_func_start sub_81034F4
-sub_81034F4: @ 81034F4
- push {r4,r5,lr}
- movs r5, 0
- b _08103500
-_081034FA:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_08103500:
- lsls r0, r5, 16
- asrs r4, r0, 16
- adds r0, r4, 0
- bl sub_81030E0
- lsls r0, 24
- cmp r0, 0
- bne _081034FA
- ldr r0, _0810351C @ =gSharedMem
- strh r5, [r0, 0x2E]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810351C: .4byte gSharedMem
- thumb_func_end sub_81034F4
-
- thumb_func_start sub_8103520
-sub_8103520: @ 8103520
- push {lr}
- adds r1, r0, 0
- ldrb r0, [r1]
- cmp r0, 0
- bne _0810352E
- movs r0, 0x1
- b _08103538
-_0810352E:
- cmp r0, 0x1
- beq _08103536
- movs r0, 0
- b _0810353C
-_08103536:
- movs r0, 0
-_08103538:
- strb r0, [r1]
- movs r0, 0x1
-_0810353C:
- pop {r1}
- bx r1
- thumb_func_end sub_8103520
-
- thumb_func_start sub_8103540
-sub_8103540: @ 8103540
- push {lr}
- ldr r1, _0810355C @ =gUnknown_083ECB88
- ldr r0, _08103560 @ =gSharedMem
- movs r2, 0x12
- ldrsh r0, [r0, r2]
- subs r0, 0x1
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {r0}
- bx r0
- .align 2, 0
-_0810355C: .4byte gUnknown_083ECB88
-_08103560: .4byte gSharedMem
- thumb_func_end sub_8103540
-
- thumb_func_start sub_8103564
-sub_8103564: @ 8103564
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r4, _081035D0 @ =gSharedMem
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _081035E0
- ldrb r1, [r4, 0x4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081035E0
- ldrh r0, [r4, 0x2E]
- movs r1, 0x2
- subs r1, r0
- lsls r1, 16
- asrs r1, 16
- movs r0, 0
- bl sub_8102BF8
- mov r1, sp
- strb r0, [r1]
- mov r0, sp
- bl sub_8103520
- lsls r0, 24
- cmp r0, 0
- beq _081035E0
- movs r5, 0
- mov r7, sp
- movs r0, 0x2
- mov r8, r0
- adds r6, r4, 0
-_081035AA:
- lsls r0, r5, 16
- asrs r4, r0, 16
- mov r0, r8
- subs r1, r0, r4
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x1
- bl sub_8102BF8
- ldrb r1, [r7]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- bne _081035D4
- movs r0, 0x2
- strh r0, [r6, 0x36]
- strh r5, [r6, 0x30]
- b _081035E0
- .align 2, 0
-_081035D0: .4byte gSharedMem
-_081035D4:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _081035AA
-_081035E0:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8103564
-
- thumb_func_start j5_08111E84
-j5_08111E84: @ 81035EC
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r4, _08103650 @ =gSharedMem
- ldrh r2, [r4, 0x34]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08103660
- ldrb r1, [r4, 0x4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08103660
- ldrh r1, [r4, 0x2E]
- subs r1, r2, r1
- lsls r1, 16
- asrs r1, 16
- movs r0, 0
- bl sub_8102BF8
- mov r1, sp
- strb r0, [r1]
- mov r0, sp
- bl sub_8103520
- lsls r0, 24
- cmp r0, 0
- beq _08103660
- movs r6, 0
- mov r7, sp
- adds r5, r4, 0
-_0810362A:
- ldrh r1, [r5, 0x34]
- lsls r0, r6, 16
- asrs r4, r0, 16
- subs r1, r4
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x1
- bl sub_8102BF8
- ldrb r1, [r7]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- bne _08103654
- ldrh r0, [r5, 0x34]
- strh r0, [r5, 0x36]
- strh r6, [r5, 0x30]
- b _08103660
- .align 2, 0
-_08103650: .4byte gSharedMem
-_08103654:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _0810362A
-_08103660:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end j5_08111E84
-
- thumb_func_start sub_8103668
-sub_8103668: @ 8103668
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r4, _0810368C @ =gSharedMem
- ldrh r3, [r4, 0x34]
- movs r0, 0x34
- ldrsh r2, [r4, r0]
- cmp r2, 0
- beq _0810375A
- ldrb r1, [r4, 0x4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0810375A
- cmp r2, 0x2
- bne _081036AE
- bl j5_08111E84
- b _0810375A
- .align 2, 0
-_0810368C: .4byte gSharedMem
-_08103690:
- ldr r0, _0810369C @ =gSharedMem
- movs r1, 0
- strh r6, [r0, 0x36]
- strh r1, [r0, 0x30]
- b _0810375A
- .align 2, 0
-_0810369C: .4byte gSharedMem
-_081036A0:
- movs r0, 0x2
- strh r0, [r5, 0x36]
- adds r0, r4, 0x1
- strh r0, [r5, 0x30]
- b _0810375A
-_081036AA:
- movs r0, 0x3
- b _08103736
-_081036AE:
- ldrh r1, [r4, 0x2E]
- subs r1, r3, r1
- lsls r1, 16
- asrs r1, 16
- movs r0, 0
- bl sub_8102BF8
- mov r1, sp
- strb r0, [r1]
- mov r0, sp
- bl sub_8103520
- lsls r0, 24
- cmp r0, 0
- beq _0810375A
- movs r6, 0x2
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0x3
- bne _081036D8
- movs r6, 0x3
-_081036D8:
- movs r5, 0
- mov r7, sp
-_081036DC:
- lsls r0, r6, 16
- asrs r4, r0, 16
- movs r0, 0x1
- adds r1, r4, 0
- bl sub_8102BF8
- ldrb r1, [r7]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- beq _08103690
- lsls r1, r5, 16
- movs r0, 0x80
- lsls r0, 9
- adds r1, r0
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- lsrs r5, r1, 16
- asrs r1, 16
- cmp r1, 0x1
- ble _081036DC
- movs r6, 0x1
- mov r7, sp
- ldr r5, _0810373C @ =gSharedMem
-_0810370E:
- ldrh r1, [r5, 0x34]
- lsls r0, r6, 16
- asrs r4, r0, 16
- subs r1, r4
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x1
- bl sub_8102BF8
- ldrb r1, [r7]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- bne _0810374E
- movs r1, 0x34
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _08103740
- cmp r4, 0x2
- ble _081036A0
-_08103736:
- strh r0, [r5, 0x36]
- strh r6, [r5, 0x30]
- b _0810375A
- .align 2, 0
-_0810373C: .4byte gSharedMem
-_08103740:
- cmp r4, 0x2
- ble _081036AA
- movs r0, 0x2
- strh r0, [r5, 0x36]
- subs r0, r4, 0x1
- strh r0, [r5, 0x30]
- b _0810375A
-_0810374E:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _0810370E
-_0810375A:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8103668
-
- thumb_func_start sub_8103764
-sub_8103764: @ 8103764
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r0, 0
- bne _08103778
- cmp r1, 0x1
- beq _08103780
-_08103778:
- cmp r0, 0x1
- bne _08103784
- cmp r2, 0
- bne _08103784
-_08103780:
- movs r0, 0x1
- b _08103786
-_08103784:
- movs r0, 0
-_08103786:
- pop {r1}
- bx r1
- thumb_func_end sub_8103764
-
- thumb_func_start sub_810378C
-sub_810378C: @ 810378C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- cmp r0, 0
- bne _081037A6
- cmp r1, 0x1
- bne _081037A6
- cmp r2, 0
- beq _081037B2
-_081037A6:
- cmp r0, 0x1
- bne _081037B6
- cmp r1, 0
- bne _081037B6
- cmp r2, 0x1
- bne _081037B6
-_081037B2:
- movs r0, 0x1
- b _081037B8
-_081037B6:
- movs r0, 0
-_081037B8:
- pop {r1}
- bx r1
- thumb_func_end sub_810378C
-
- thumb_func_start sub_81037BC
-sub_81037BC: @ 81037BC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- cmp r0, 0
- bne _081037D6
- cmp r1, 0x1
- bne _081037D6
- cmp r2, 0
- beq _08103802
-_081037D6:
- cmp r0, 0x1
- bne _081037E2
- cmp r1, 0
- bne _081037E2
- cmp r2, 0x1
- beq _08103802
-_081037E2:
- cmp r0, 0
- bne _081037EE
- cmp r1, 0
- bne _081037EE
- cmp r2, 0x1
- beq _08103802
-_081037EE:
- cmp r0, 0x1
- bne _081037FA
- cmp r1, 0x1
- bne _081037FA
- cmp r2, 0
- beq _08103802
-_081037FA:
- cmp r0, r1
- bne _08103806
- cmp r0, r2
- bne _08103806
-_08103802:
- movs r0, 0
- b _08103808
-_08103806:
- movs r0, 0x1
-_08103808:
- pop {r1}
- bx r1
- thumb_func_end sub_81037BC
-
- thumb_func_start sub_810380C
-sub_810380C: @ 810380C
- push {lr}
- ldr r1, _08103828 @ =gUnknown_083ECB94
- ldr r0, _0810382C @ =gSharedMem
- movs r2, 0x12
- ldrsh r0, [r0, r2]
- subs r0, 0x1
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {r0}
- bx r0
- .align 2, 0
-_08103828: .4byte gUnknown_083ECB94
-_0810382C: .4byte gSharedMem
- thumb_func_end sub_810380C
-
- thumb_func_start sub_8103830
-sub_8103830: @ 8103830
- push {r4-r7,lr}
- movs r6, 0
- ldr r7, _08103868 @ =gSharedMem
- ldrh r1, [r7, 0x2E]
- movs r4, 0x2
- subs r1, r4, r1
- lsls r1, 16
- asrs r1, 16
- movs r0, 0
- bl sub_8102BF8
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r0, [r7, 0x30]
- subs r4, r0
- lsls r4, 16
- asrs r4, 16
- movs r0, 0x1
- adds r1, r4, 0
- bl sub_8102BF8
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r5, r1
- bne _081038A0
- movs r4, 0x2
- b _08103876
- .align 2, 0
-_08103868: .4byte gSharedMem
-_0810386C:
- lsls r0, r6, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r6, r0, 16
-_08103876:
- lsls r1, r6, 16
- asrs r1, 16
- subs r1, r4, r1
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x2
- bl sub_8102BF8
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _0810386C
- cmp r5, 0
- bne _08103896
- cmp r0, 0x1
- beq _0810386C
-_08103896:
- cmp r5, 0x1
- bne _08103900
- cmp r0, 0
- beq _0810386C
- b _08103900
-_081038A0:
- adds r0, r5, 0
- bl sub_8103764
- lsls r0, 24
- cmp r0, 0
- beq _08103900
- ldrb r1, [r7, 0x4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081038DC
- movs r7, 0x2
-_081038B8:
- lsls r0, r6, 16
- asrs r4, r0, 16
- subs r1, r7, r4
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x2
- bl sub_8102BF8
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _08103900
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _081038B8
-_081038DC:
- movs r6, 0
- movs r7, 0x2
- b _081038E8
-_081038E2:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_081038E8:
- lsls r0, r6, 16
- asrs r4, r0, 16
- subs r1, r7, r4
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x2
- bl sub_8102BF8
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _081038E2
-_08103900:
- ldr r0, _0810390C @ =gSharedMem
- strh r6, [r0, 0x32]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810390C: .4byte gSharedMem
- thumb_func_end sub_8103830
-
- thumb_func_start sub_8103910
-sub_8103910: @ 8103910
- 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 r4, _08103978 @ =gSharedMem
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- cmp r1, 0
- beq _081039A6
- ldrh r2, [r4, 0x34]
- movs r3, 0x34
- ldrsh r0, [r4, r3]
- cmp r0, r1
- bne _081039A6
- ldrb r1, [r4, 0x4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081039A6
- ldrh r1, [r4, 0x2E]
- subs r1, r2, r1
- lsls r1, 16
- asrs r1, 16
- movs r0, 0
- bl sub_8102BF8
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r1, [r4, 0x36]
- ldrh r0, [r4, 0x30]
- subs r1, r0
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x1
- bl sub_8102BF8
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r7, 0
- adds r1, r6, 0
- bl sub_8103764
- lsls r0, 24
- cmp r0, 0
- beq _081039A6
- movs r5, 0
- b _08103982
- .align 2, 0
-_08103978: .4byte gSharedMem
-_0810397C:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_08103982:
- lsls r6, r5, 16
- asrs r5, r6, 16
- cmp r5, 0x4
- bgt _081039A6
- ldr r0, _08103A34 @ =gSharedMem
- ldrh r1, [r0, 0x36]
- subs r1, r5
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x2
- bl sub_8102BF8
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r7, r4
- bne _0810397C
- lsrs r6, 16
- str r6, [sp]
-_081039A6:
- ldr r0, _08103A34 @ =gSharedMem
- mov r9, r0
-_081039AA:
- movs r5, 0x1
- movs r1, 0
- mov r8, r1
- ldr r2, [sp]
- lsls r2, 16
- mov r10, r2
-_081039B6:
- mov r3, r9
- ldrh r1, [r3, 0x2E]
- lsls r5, 16
- asrs r4, r5, 16
- subs r1, r4, r1
- lsls r1, 16
- asrs r1, 16
- movs r0, 0
- bl sub_8102BF8
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, r9
- ldrh r1, [r0, 0x30]
- subs r1, r4, r1
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x1
- bl sub_8102BF8
- lsls r0, 24
- lsrs r6, r0, 24
- mov r1, r10
- asrs r0, r1, 16
- subs r4, r0
- lsls r4, 16
- asrs r4, 16
- movs r0, 0x2
- adds r1, r4, 0
- bl sub_8102BF8
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl sub_81037BC
- lsls r0, 24
- cmp r0, 0
- bne _08103A38
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl sub_810378C
- lsls r0, 24
- cmp r0, 0
- beq _08103A24
- mov r2, r9
- ldrb r1, [r2, 0x4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08103A38
-_08103A24:
- mov r3, r8
- lsls r0, r3, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r0, 16
- mov r8, r0
- b _08103A46
- .align 2, 0
-_08103A34: .4byte gSharedMem
-_08103A38:
- movs r2, 0x80
- lsls r2, 9
- adds r0, r5, r2
- lsrs r5, r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _081039B6
-_08103A46:
- mov r3, r8
- cmp r3, 0
- beq _08103A5C
- ldr r1, [sp]
- lsls r0, r1, 16
- movs r2, 0x80
- lsls r2, 9
- adds r0, r2
- lsrs r0, 16
- str r0, [sp]
- b _081039AA
-_08103A5C:
- ldr r0, _08103A74 @ =gSharedMem
- mov r3, sp
- ldrh r3, [r3]
- strh r3, [r0, 0x32]
- 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
-_08103A74: .4byte gSharedMem
- thumb_func_end sub_8103910
-
- thumb_func_start sub_8103A78
-sub_8103A78: @ 8103A78
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- bl sub_8103910
- ldr r4, _08103B10 @ =gSharedMem
- movs r0, 0x36
- ldrsh r1, [r4, r0]
- cmp r1, 0
- beq _08103B20
- ldrh r2, [r4, 0x34]
- movs r3, 0x34
- ldrsh r0, [r4, r3]
- cmp r0, r1
- beq _08103B20
- ldrb r1, [r4, 0x4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08103B20
- ldrh r1, [r4, 0x2E]
- subs r1, r2, r1
- lsls r1, 16
- asrs r1, 16
- movs r0, 0
- bl sub_8102BF8
- lsls r0, 24
- lsrs r6, r0, 24
- ldrh r1, [r4, 0x36]
- ldrh r0, [r4, 0x30]
- subs r1, r0
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x1
- bl sub_8102BF8
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_8103764
- lsls r0, 24
- cmp r0, 0
- beq _08103B20
- movs r1, 0x1
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- bne _08103AE0
- movs r1, 0x3
-_08103AE0:
- movs r3, 0
- lsls r1, 16
- mov r8, r1
- adds r7, r4, 0
-_08103AE8:
- ldrh r2, [r7, 0x32]
- lsls r0, r3, 16
- asrs r5, r0, 16
- adds r2, r5, r2
- mov r3, r8
- asrs r1, r3, 16
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x2
- bl sub_8102BF8
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r6, r4
- bne _08103B14
- ldrh r0, [r7, 0x32]
- adds r0, r5, r0
- strh r0, [r7, 0x32]
- b _08103B20
- .align 2, 0
-_08103B10: .4byte gSharedMem
-_08103B14:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _08103AE8
-_08103B20:
- ldr r7, _08103B90 @ =gSharedMem
-_08103B22:
- ldrh r0, [r7, 0x2E]
- movs r1, 0x1
- subs r1, r0
- lsls r1, 16
- asrs r1, 16
- movs r0, 0
- bl sub_8102BF8
- lsls r0, 24
- lsrs r6, r0, 24
- ldrh r0, [r7, 0x30]
- movs r1, 0x2
- subs r1, r0
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x1
- bl sub_8102BF8
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r0, [r7, 0x32]
- movs r1, 0x3
- subs r1, r0
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x2
- bl sub_8102BF8
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_81037BC
- lsls r0, 24
- cmp r0, 0
- bne _08103B94
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_810378C
- lsls r0, 24
- cmp r0, 0
- beq _08103B88
- ldrb r1, [r7, 0x4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08103B94
-_08103B88:
- ldrh r0, [r7, 0x32]
- adds r0, 0x1
- strh r0, [r7, 0x32]
- b _08103B22
- .align 2, 0
-_08103B90: .4byte gSharedMem
-_08103B94:
- ldr r7, _08103C04 @ =gSharedMem
-_08103B96:
- ldrh r0, [r7, 0x2E]
- movs r1, 0x3
- subs r1, r0
- lsls r1, 16
- asrs r1, 16
- movs r0, 0
- bl sub_8102BF8
- lsls r0, 24
- lsrs r6, r0, 24
- ldrh r0, [r7, 0x30]
- movs r1, 0x2
- subs r1, r0
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x1
- bl sub_8102BF8
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r0, [r7, 0x32]
- movs r1, 0x1
- subs r1, r0
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x2
- bl sub_8102BF8
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_81037BC
- lsls r0, 24
- cmp r0, 0
- bne _08103C08
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_810378C
- lsls r0, 24
- cmp r0, 0
- beq _08103BFC
- ldrb r1, [r7, 0x4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08103C08
-_08103BFC:
- ldrh r0, [r7, 0x32]
- adds r0, 0x1
- strh r0, [r7, 0x32]
- b _08103B96
- .align 2, 0
-_08103C04: .4byte gSharedMem
-_08103C08:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8103A78
-
- thumb_func_start sub_8103C14
-sub_8103C14: @ 8103C14
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _08103C40 @ =sub_8103C48
- adds r0, r5, 0
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08103C44 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x26]
- bl _call_via_r5
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08103C40: .4byte sub_8103C48
-_08103C44: .4byte gTasks
- thumb_func_end sub_8103C14
-
- thumb_func_start sub_8103C48
-sub_8103C48: @ 8103C48
- push {r4,lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _08103C70 @ =gUnknown_083ECBA0
- ldr r2, _08103C74 @ =gTasks
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r4, 0x8
- ldrsh r2, [r0, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08103C70: .4byte gUnknown_083ECBA0
-_08103C74: .4byte gTasks
- thumb_func_end sub_8103C48
-
- thumb_func_start sub_8103C78
-sub_8103C78: @ 8103C78
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r1, _08103CA8 @ =gUnknown_083ECBAC
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x73
- str r1, [sp]
- movs r1, 0x62
- movs r2, 0x63
- movs r3, 0x72
- bl sub_81065A8
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08103CA8: .4byte gUnknown_083ECBAC
- thumb_func_end sub_8103C78
-
- thumb_func_start sub_8103CAC
-sub_8103CAC: @ 8103CAC
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- ble _08103CC4
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_08103CC4:
- pop {r0}
- bx r0
- thumb_func_end sub_8103CAC
-
- thumb_func_start sub_8103CC8
-sub_8103CC8: @ 8103CC8
- push {r4,lr}
- sub sp, 0x4
- lsls r4, r1, 24
- lsrs r4, 24
- ldr r1, _08103CFC @ =gUnknown_083ECBAC
- movs r2, 0x26
- ldrsh r0, [r0, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x53
- str r1, [sp]
- movs r1, 0x42
- movs r2, 0x43
- movs r3, 0x52
- bl sub_81065A8
- adds r0, r4, 0
- bl DestroyTask
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08103CFC: .4byte gUnknown_083ECBAC
- thumb_func_end sub_8103CC8
-
- thumb_func_start sub_8103D00
-sub_8103D00: @ 8103D00
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08103D20 @ =gUnknown_083EDD08
- lsls r1, r0, 2
- adds r1, r2
- ldr r2, [r1]
- ldr r1, _08103D24 @ =gUnknown_083EDD30
- adds r0, r1
- ldrb r1, [r0]
- adds r0, r2, 0
- movs r2, 0x2
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_08103D20: .4byte gUnknown_083EDD08
-_08103D24: .4byte gUnknown_083EDD30
- thumb_func_end sub_8103D00
-
- thumb_func_start sub_8103D28
-sub_8103D28: @ 8103D28
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08103D48 @ =gUnknown_083EDD1C
- lsls r1, r0, 2
- adds r1, r2
- ldr r2, [r1]
- ldr r1, _08103D4C @ =gUnknown_083EDD30
- adds r0, r1
- ldrb r1, [r0]
- adds r0, r2, 0
- movs r2, 0x2
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_08103D48: .4byte gUnknown_083EDD1C
-_08103D4C: .4byte gUnknown_083EDD30
- thumb_func_end sub_8103D28
-
- thumb_func_start sub_8103D50
-sub_8103D50: @ 8103D50
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r4, 0
- ldr r0, _08103D84 @ =gUnknown_083EDD3B
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r4, r0
- bcs _08103D7C
- ldr r7, _08103D88 @ =gUnknown_083EDD35
- adds r6, r0, 0
- lsls r5, r1, 1
-_08103D68:
- adds r0, r4, r5
- adds r0, r7
- ldrb r0, [r0]
- bl sub_8103D00
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _08103D68
-_08103D7C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08103D84: .4byte gUnknown_083EDD3B
-_08103D88: .4byte gUnknown_083EDD35
- thumb_func_end sub_8103D50
-
- thumb_func_start sub_8103D8C
-sub_8103D8C: @ 8103D8C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r4, 0
- ldr r0, _08103DC0 @ =gUnknown_083EDD3B
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r4, r0
- bcs _08103DB8
- ldr r7, _08103DC4 @ =gUnknown_083EDD35
- adds r6, r0, 0
- lsls r5, r1, 1
-_08103DA4:
- adds r0, r4, r5
- adds r0, r7
- ldrb r0, [r0]
- bl sub_8103D28
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _08103DA4
-_08103DB8:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08103DC0: .4byte gUnknown_083EDD3B
-_08103DC4: .4byte gUnknown_083EDD35
- thumb_func_end sub_8103D8C
-
- thumb_func_start sub_8103DC8
-sub_8103DC8: @ 8103DC8
- push {r4-r6,lr}
- movs r4, 0
- ldr r6, _08103DF8 @ =gSprites
- ldr r5, _08103DFC @ =gSharedMem + 0x44
-_08103DD0:
- ldr r0, _08103E00 @ =sub_8103EE4
- bl CreateInvisibleSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- strh r4, [r1, 0x2E]
- adds r1, r4, r5
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _08103DD0
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08103DF8: .4byte gSprites
-_08103DFC: .4byte gSharedMem + 0x44
-_08103E00: .4byte sub_8103EE4
- thumb_func_end sub_8103DC8
-
- thumb_func_start sub_8103E04
-sub_8103E04: @ 8103E04
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08103E30 @ =gSharedMem
- adds r1, 0x44
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08103E34 @ =gSprites
- adds r0, r1
- movs r2, 0
- movs r1, 0x1
- strh r1, [r0, 0x30]
- movs r1, 0x4
- strh r1, [r0, 0x32]
- strh r2, [r0, 0x34]
- strh r2, [r0, 0x36]
- movs r1, 0x2
- strh r1, [r0, 0x38]
- strh r2, [r0, 0x3C]
- bx lr
- .align 2, 0
-_08103E30: .4byte gSharedMem
-_08103E34: .4byte gSprites
- thumb_func_end sub_8103E04
-
- thumb_func_start sub_8103E38
-sub_8103E38: @ 8103E38
- push {r4,r5,lr}
- movs r2, 0
- ldr r4, _08103E60 @ =gSharedMem + 0x44
- ldr r3, _08103E64 @ =gSprites
-_08103E40:
- adds r0, r2, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r3
- movs r5, 0x30
- ldrsh r0, [r1, r5]
- cmp r0, 0
- beq _08103E68
- movs r5, 0x32
- ldrsh r0, [r1, r5]
- cmp r0, 0
- beq _08103E68
- movs r0, 0
- b _08103E74
- .align 2, 0
-_08103E60: .4byte gSharedMem + 0x44
-_08103E64: .4byte gSprites
-_08103E68:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x4
- bls _08103E40
- movs r0, 0x1
-_08103E74:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8103E38
-
- thumb_func_start sub_8103E7C
-sub_8103E7C: @ 8103E7C
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _08103E94 @ =gSharedMem + 0x44
-_08103E82:
- adds r0, r4, r5
- ldrb r0, [r0]
- bl sub_8103EAC
- lsls r0, 24
- cmp r0, 0
- bne _08103E98
- movs r0, 0
- b _08103EA4
- .align 2, 0
-_08103E94: .4byte gSharedMem + 0x44
-_08103E98:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _08103E82
- movs r0, 0x1
-_08103EA4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8103E7C
-
- thumb_func_start sub_8103EAC
-sub_8103EAC: @ 8103EAC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08103EC8 @ =gSprites
- adds r1, r0
- movs r2, 0x30
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08103ECC
- movs r0, 0x1
- b _08103EDE
- .align 2, 0
-_08103EC8: .4byte gSprites
-_08103ECC:
- ldrh r2, [r1, 0x3C]
- movs r3, 0x3C
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08103EDA
- movs r0, 0
- strh r0, [r1, 0x30]
-_08103EDA:
- lsls r0, r2, 24
- lsrs r0, 24
-_08103EDE:
- pop {r1}
- bx r1
- thumb_func_end sub_8103EAC
-
- thumb_func_start sub_8103EE4
-sub_8103EE4: @ 8103EE4
- push {r4-r7,lr}
- adds r2, r0, 0
- movs r1, 0x30
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _08103F66
- ldrh r0, [r2, 0x34]
- subs r0, 0x1
- strh r0, [r2, 0x34]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _08103F4E
- movs r0, 0
- strh r0, [r2, 0x3C]
- movs r6, 0x1
- strh r6, [r2, 0x34]
- ldrh r1, [r2, 0x38]
- ldrh r3, [r2, 0x36]
- adds r0, r1, r3
- strh r0, [r2, 0x36]
- movs r4, 0x4
- ldrh r5, [r2, 0x32]
- movs r7, 0x32
- ldrsh r3, [r2, r7]
- cmp r3, 0
- beq _08103F20
- movs r4, 0x8
-_08103F20:
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bgt _08103F38
- strh r6, [r2, 0x3C]
- negs r0, r1
- strh r0, [r2, 0x38]
- cmp r3, 0
- beq _08103F4E
- subs r0, r5, 0x1
- strh r0, [r2, 0x32]
- b _08103F40
-_08103F38:
- cmp r0, r4
- blt _08103F40
- negs r0, r1
- strh r0, [r2, 0x38]
-_08103F40:
- movs r1, 0x32
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _08103F4E
- ldrh r0, [r2, 0x34]
- lsls r0, 1
- strh r0, [r2, 0x34]
-_08103F4E:
- ldr r1, _08103F6C @ =gUnknown_083EDD30
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- adds r0, r1
- ldrb r0, [r0]
- ldrh r3, [r2, 0x36]
- lsls r3, 24
- lsrs r3, 24
- adds r1, r3, 0
- adds r2, r3, 0
- bl MultiplyPaletteRGBComponents
-_08103F66:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08103F6C: .4byte gUnknown_083EDD30
- thumb_func_end sub_8103EE4
-
- thumb_func_start sub_8103F70
-sub_8103F70: @ 8103F70
- push {r4,lr}
- ldr r4, _08103F98 @ =sub_8103FE8
- adds r0, r4, 0
- movs r1, 0x6
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08103F9C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x1
- strh r2, [r1, 0xE]
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08103F98: .4byte sub_8103FE8
-_08103F9C: .4byte gTasks
- thumb_func_end sub_8103F70
-
- thumb_func_start sub_8103FA0
-sub_8103FA0: @ 8103FA0
- push {lr}
- ldr r0, _08103FC4 @ =sub_8103FE8
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _08103FC8 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0xC
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08103FCC
- movs r0, 0
- b _08103FE0
- .align 2, 0
-_08103FC4: .4byte sub_8103FE8
-_08103FC8: .4byte gTasks
-_08103FCC:
- adds r0, r2, 0
- bl DestroyTask
- ldr r0, _08103FE4 @ =gUnknown_083EDDAC
- ldr r0, [r0]
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- movs r0, 0x1
-_08103FE0:
- pop {r1}
- bx r1
- .align 2, 0
-_08103FE4: .4byte gUnknown_083EDDAC
- thumb_func_end sub_8103FA0
-
- thumb_func_start sub_8103FE8
-sub_8103FE8: @ 8103FE8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08104040 @ =gTasks
- adds r2, r1, r0
- ldrh r0, [r2, 0xA]
- subs r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _08104026
- movs r0, 0x4
- strh r0, [r2, 0xA]
- ldrh r1, [r2, 0xE]
- ldrh r3, [r2, 0xC]
- adds r0, r1, r3
- strh r0, [r2, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- beq _08104022
- cmp r0, 0x2
- bne _08104026
-_08104022:
- negs r0, r1
- strh r0, [r2, 0xE]
-_08104026:
- ldr r0, _08104044 @ =gUnknown_083EDDA0
- movs r3, 0xC
- ldrsh r1, [r2, r3]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_08104040: .4byte gTasks
-_08104044: .4byte gUnknown_083EDDA0
- thumb_func_end sub_8103FE8
-
- thumb_func_start sub_8104048
-sub_8104048: @ 8104048
- push {lr}
- ldr r0, _0810405C @ =sub_81040E8
- movs r1, 0x8
- bl CreateTask
- ldr r1, _08104060 @ =gSharedMem
- adds r1, 0x3E
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0810405C: .4byte sub_81040E8
-_08104060: .4byte gSharedMem
- thumb_func_end sub_8104048
-
- thumb_func_start sub_8104064
-sub_8104064: @ 8104064
- push {r4,lr}
- ldr r0, _08104090 @ =gSharedMem
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _08104094 @ =gTasks
- adds r4, r0
- adds r0, r4, 0
- bl sub_810421C
- movs r1, 0x1
- strh r1, [r4, 0x8]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- strh r1, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08104090: .4byte gSharedMem
-_08104094: .4byte gTasks
- thumb_func_end sub_8104064
-
- thumb_func_start sub_8104098
-sub_8104098: @ 8104098
- push {r4,lr}
- ldr r0, _081040C0 @ =gSharedMem
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _081040C4 @ =gTasks
- adds r4, r0
- adds r0, r4, 0
- bl sub_810421C
- movs r0, 0x3
- strh r0, [r4, 0x8]
- movs r0, 0x1
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081040C0: .4byte gSharedMem
-_081040C4: .4byte gTasks
- thumb_func_end sub_8104098
-
- thumb_func_start sub_81040C8
-sub_81040C8: @ 81040C8
- ldr r2, _081040E0 @ =gTasks
- ldr r0, _081040E4 @ =gSharedMem
- adds r0, 0x3E
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r0, [r0, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bx lr
- .align 2, 0
-_081040E0: .4byte gTasks
-_081040E4: .4byte gSharedMem
- thumb_func_end sub_81040C8
-
- thumb_func_start sub_81040E8
-sub_81040E8: @ 81040E8
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _08104110 @ =gUnknown_083ECBB4
- ldr r2, _08104114 @ =gTasks
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0x8
- ldrsh r1, [r0, r2]
- lsls r1, 2
- adds r1, r3
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_08104110: .4byte gUnknown_083ECBB4
-_08104114: .4byte gTasks
- thumb_func_end sub_81040E8
-
- thumb_func_start nullsub_68
-nullsub_68: @ 8104118
- bx lr
- thumb_func_end nullsub_68
-
- thumb_func_start sub_810411C
-sub_810411C: @ 810411C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0xA]
- lsls r0, 19
- movs r1, 0xA0
- lsls r1, 13
- adds r0, r1
- asrs r0, 16
- movs r1, 0x14
- bl sub_8105B1C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810411C
-
- thumb_func_start sub_8104144
-sub_8104144: @ 8104144
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, _08104174 @ =gSprites
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x3C
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0810419E
- ldrh r1, [r4, 0xA]
- adds r0, r1, 0x2
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x1
- bne _08104178
- movs r0, 0x1
- b _0810417E
- .align 2, 0
-_08104174: .4byte gSprites
-_08104178:
- cmp r1, 0x10
- bne _0810417E
- movs r0, 0x2
-_0810417E:
- lsls r1, r2, 16
- asrs r1, 15
- ldr r2, _081041A4 @ =0x0600e800
- adds r1, r2
- adds r1, 0x80
- ldr r2, _081041A8 @ =gUnknown_083ECBC4
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r1]
- ldrb r0, [r4, 0xC]
- bl sub_8105B88
- movs r0, 0
- strh r0, [r4, 0x8]
- strh r0, [r4, 0x26]
-_0810419E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081041A4: .4byte 0x0600e800
-_081041A8: .4byte gUnknown_083ECBC4
- thumb_func_end sub_8104144
-
- thumb_func_start sub_81041AC
-sub_81041AC: @ 81041AC
- push {r4,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0xA]
- adds r0, r1, 0x2
- lsls r0, 16
- lsrs r4, r0, 16
- movs r2, 0
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x1
- bne _081041C6
- movs r2, 0x1
- b _081041CC
-_081041C6:
- cmp r1, 0x10
- bne _081041CC
- movs r2, 0x2
-_081041CC:
- movs r1, 0xC
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _081041F0
- lsls r0, r4, 16
- asrs r0, 15
- ldr r1, _08104214 @ =0x0600e800
- adds r0, r1
- adds r0, 0x80
- ldr r1, _08104218 @ =gUnknown_083ECBC4
- lsls r2, 2
- adds r1, 0x2
- adds r2, r1
- ldrh r1, [r2]
- strh r1, [r0]
- ldrh r0, [r3, 0xA]
- subs r0, 0x1
- strh r0, [r3, 0xA]
-_081041F0:
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _08104202
- movs r0, 0
- strh r0, [r3, 0xC]
-_08104202:
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _0810420E
- strh r0, [r3, 0x8]
- strh r0, [r3, 0x26]
-_0810420E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08104214: .4byte 0x0600e800
-_08104218: .4byte gUnknown_083ECBC4
- thumb_func_end sub_81041AC
-
- thumb_func_start sub_810421C
-sub_810421C: @ 810421C
- push {lr}
- movs r1, 0x2
- adds r2, r0, 0
- adds r2, 0x8
- movs r3, 0
-_08104226:
- lsls r0, r1, 1
- adds r0, r2, r0
- strh r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _08104226
- pop {r0}
- bx r0
- thumb_func_end sub_810421C
-
- thumb_func_start sub_810423C
-sub_810423C: @ 810423C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r2, 0x3
- ldr r6, _08104268 @ =0x0600e800
- movs r4, 0
- ldr r0, _0810426C @ =gTasks
- mov r8, r0
- ldr r1, _08104270 @ =gSharedMem
- mov r12, r1
- cmp r4, r5
- bge _081042A6
- ldr r7, _08104274 @ =gUnknown_083ECBC4
-_0810425A:
- movs r3, 0
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, 0
- bne _08104278
- movs r3, 0x1
- b _0810427E
- .align 2, 0
-_08104268: .4byte 0x0600e800
-_0810426C: .4byte gTasks
-_08104270: .4byte gSharedMem
-_08104274: .4byte gUnknown_083ECBC4
-_08104278:
- cmp r0, 0xF
- bne _0810427E
- movs r3, 0x2
-_0810427E:
- lsls r2, 16
- asrs r2, 16
- lsls r1, r2, 1
- adds r1, r6
- adds r1, 0x80
- lsls r0, r3, 2
- adds r0, r7
- ldrh r0, [r0]
- strh r0, [r1]
- lsls r0, r4, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- adds r2, 0x1
- lsls r2, 16
- lsrs r2, 16
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, r5
- blt _0810425A
-_081042A6:
- lsls r1, r4, 16
- asrs r0, r1, 16
- cmp r0, 0xF
- bgt _081042F0
- ldr r7, _081042BC @ =gUnknown_083ECBC4 + 0x2
-_081042B0:
- movs r3, 0
- asrs r0, r1, 16
- cmp r0, 0
- bne _081042C0
- movs r3, 0x1
- b _081042C6
- .align 2, 0
-_081042BC: .4byte gUnknown_083ECBC4 + 0x2
-_081042C0:
- cmp r0, 0xF
- bne _081042C6
- movs r3, 0x2
-_081042C6:
- lsls r2, 16
- asrs r2, 16
- lsls r1, r2, 1
- adds r1, r6
- adds r1, 0x80
- lsls r0, r3, 2
- adds r0, r7
- ldrh r0, [r0]
- strh r0, [r1]
- lsls r0, r4, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r4, r0, 16
- adds r2, 0x1
- lsls r2, 16
- lsrs r2, 16
- lsls r1, r4, 16
- asrs r0, r1, 16
- cmp r0, 0xF
- ble _081042B0
-_081042F0:
- mov r0, r12
- adds r0, 0x3E
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- add r0, r8
- strh r5, [r0, 0xA]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810423C
-
- thumb_func_start sub_810430C
-sub_810430C: @ 810430C
- push {r4,lr}
- ldr r4, _08104328 @ =sub_810434C
- adds r0, r4, 0
- movs r1, 0x7
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08104328: .4byte sub_810434C
- thumb_func_end sub_810430C
-
- thumb_func_start sub_810432C
-sub_810432C: @ 810432C
- push {lr}
- ldr r0, _08104340 @ =sub_810434C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _08104344
- movs r0, 0
- b _08104346
- .align 2, 0
-_08104340: .4byte sub_810434C
-_08104344:
- movs r0, 0x1
-_08104346:
- pop {r1}
- bx r1
- thumb_func_end sub_810432C
-
- thumb_func_start sub_810434C
-sub_810434C: @ 810434C
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _08104374 @ =gUnknown_083ECBD0
- ldr r2, _08104378 @ =gTasks
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0x8
- ldrsh r1, [r0, r2]
- lsls r1, 2
- adds r1, r3
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_08104374: .4byte gUnknown_083ECBD0
-_08104378: .4byte gTasks
- thumb_func_end sub_810434C
-
- thumb_func_start sub_810437C
-sub_810437C: @ 810437C
- push {lr}
- ldr r1, _081043DC @ =gSharedMem
- movs r2, 0
- strb r2, [r1, 0xA]
- strh r2, [r1, 0x14]
- strh r2, [r1, 0x16]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- strh r2, [r0, 0xA]
- movs r1, 0x1E
- strh r1, [r0, 0xC]
- movs r1, 0xA0
- lsls r1, 3
- strh r1, [r0, 0x10]
- ldr r0, _081043E0 @ =gSpriteCoordOffsetX
- strh r2, [r0]
- ldr r0, _081043E4 @ =gSpriteCoordOffsetY
- strh r2, [r0]
- ldr r0, _081043E8 @ =REG_BG1HOFS
- strh r2, [r0]
- adds r0, 0x2
- strh r2, [r0]
- movs r0, 0x1E
- movs r1, 0
- bl sub_8104A40
- bl sub_81051C0
- bl sub_8105100
- bl sub_81052EC
- bl sub_81053A0
- bl sub_810545C
- bl sub_8102680
- bl StopMapMusic
- movs r0, 0xC4
- lsls r0, 1
- bl PlayNewMapMusic
- pop {r0}
- bx r0
- .align 2, 0
-_081043DC: .4byte gSharedMem
-_081043E0: .4byte gSpriteCoordOffsetX
-_081043E4: .4byte gSpriteCoordOffsetY
-_081043E8: .4byte REG_BG1HOFS
- thumb_func_end sub_810437C
-
- thumb_func_start sub_81043EC
-sub_81043EC: @ 81043EC
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _0810445C @ =gSpriteCoordOffsetX
- ldrh r0, [r1]
- subs r0, 0x8
- strh r0, [r1]
- ldrh r2, [r4, 0xA]
- adds r2, 0x8
- strh r2, [r4, 0xA]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- adds r0, 0xF0
- movs r1, 0xFF
- ands r0, r1
- lsrs r3, r0, 3
- ldr r1, _08104460 @ =REG_BG1HOFS
- ldr r0, _08104464 @ =0x000001ff
- ands r2, r0
- strh r2, [r1]
- adds r2, r3, 0
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r2, r0
- beq _08104438
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0x12
- bgt _08104438
- strh r3, [r4, 0xC]
- ldrh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r4, 0xE]
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- adds r0, r2, 0
- bl sub_8104A40
-_08104438:
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0xC7
- ble _0810444A
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x8]
- strh r1, [r4, 0xE]
-_0810444A:
- ldrh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 24
- bl sub_8102D28
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810445C: .4byte gSpriteCoordOffsetX
-_08104460: .4byte REG_BG1HOFS
-_08104464: .4byte 0x000001ff
- thumb_func_end sub_81043EC
-
- thumb_func_start sub_8104468
-sub_8104468: @ 8104468
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 24
- bl sub_8102D28
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3B
- ble _08104492
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- bl sub_8105578
- bl sub_81056F0
-_08104492:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8104468
-
- thumb_func_start sub_8104498
-sub_8104498: @ 8104498
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r7, r0, 0
- ldr r1, _08104534 @ =gUnknown_083ECC1C
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- add r0, sp, 0x4
- mov r8, r0
- ldr r1, _08104538 @ =gUnknown_083ECC20
- movs r2, 0x8
- bl memcpy
- add r6, sp, 0xC
- ldr r1, _0810453C @ =gUnknown_083ECC28
- adds r0, r6, 0
- movs r2, 0x8
- bl memcpy
- ldrh r0, [r7, 0x10]
- lsls r0, 16
- asrs r0, 24
- bl sub_8102D28
- ldrh r0, [r7, 0x10]
- subs r0, 0x4
- strh r0, [r7, 0x10]
- lsls r0, 16
- asrs r0, 24
- movs r5, 0x4
- subs r5, r0
- lsls r4, r5, 1
- add r8, r4
- mov r1, r8
- movs r2, 0
- ldrsh r0, [r1, r2]
- bl sub_8105688
- adds r6, r4
- movs r1, 0
- ldrsh r0, [r6, r1]
- bl sub_81057E8
- ldr r0, _08104540 @ =gSharedMem
- adds r0, 0x3F
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08104544 @ =gSprites
- adds r0, r1
- mov r2, sp
- adds r1, r2, r5
- ldrb r1, [r1]
- bl StartSpriteAnimIfDifferent
- movs r1, 0x10
- ldrsh r0, [r7, r1]
- movs r1, 0x80
- lsls r1, 1
- cmp r0, r1
- bgt _08104526
- ldrh r0, [r7, 0x8]
- adds r0, 0x1
- strh r0, [r7, 0x8]
- strh r1, [r7, 0x10]
- movs r0, 0
- strh r0, [r7, 0x12]
-_08104526:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08104534: .4byte gUnknown_083ECC1C
-_08104538: .4byte gUnknown_083ECC20
-_0810453C: .4byte gUnknown_083ECC28
-_08104540: .4byte gSharedMem
-_08104544: .4byte gSprites
- thumb_func_end sub_8104498
-
- thumb_func_start sub_8104548
-sub_8104548: @ 8104548
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 24
- bl sub_8102D28
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4F
- ble _0810458A
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- strh r0, [r4, 0x12]
- movs r0, 0x2
- bl sub_81057E8
- ldr r0, _08104590 @ =gSharedMem
- adds r0, 0x3F
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08104594 @ =gSprites
- adds r0, r1
- movs r1, 0x3
- bl StartSpriteAnimIfDifferent
-_0810458A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08104590: .4byte gSharedMem
-_08104594: .4byte gSprites
- thumb_func_end sub_8104548
-
- thumb_func_start sub_8104598
-sub_8104598: @ 8104598
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 24
- bl sub_8102D28
- ldrb r0, [r4, 0x10]
- adds r0, 0x80
- strh r0, [r4, 0x10]
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4F
- ble _081045C4
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- strh r0, [r4, 0x12]
-_081045C4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8104598
-
- thumb_func_start sub_81045CC
-sub_81045CC: @ 81045CC
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 24
- bl sub_8102D28
- ldrb r0, [r4, 0x10]
- adds r0, 0x40
- strh r0, [r4, 0x10]
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x27
- ble _08104634
- movs r0, 0
- strh r0, [r4, 0x12]
- ldr r1, _0810460C @ =gSharedMem
- ldrb r0, [r1, 0x5]
- cmp r0, 0
- beq _08104610
- ldrb r1, [r1, 0xA]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bgt _0810462E
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- b _0810462C
- .align 2, 0
-_0810460C: .4byte gSharedMem
-_08104610:
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0x3
- ble _0810461E
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- b _0810462C
-_0810461E:
- ldrh r0, [r4, 0x14]
- bl sub_81026DC
- lsls r0, 24
- cmp r0, 0
- beq _0810462E
- movs r0, 0xE
-_0810462C:
- strh r0, [r4, 0x8]
-_0810462E:
- ldrh r0, [r4, 0x14]
- adds r0, 0x1
- strh r0, [r4, 0x14]
-_08104634:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81045CC
-
- thumb_func_start sub_810463C
-sub_810463C: @ 810463C
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r6, _08104660 @ =gSharedMem
- movs r1, 0x14
- ldrsh r0, [r6, r1]
- movs r1, 0x14
- bl __modsi3
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r0, 0
- beq _08104664
- ldrh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 24
- bl sub_8102D5C
- b _08104688
- .align 2, 0
-_08104660: .4byte gSharedMem
-_08104664:
- movs r0, 0x1
- bl sub_8102C48
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r6, 0x5]
- cmp r0, r1
- beq _08104692
- ldrh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 24
- bl sub_8102D28
- movs r1, 0x14
- ldrsh r0, [r6, r1]
- movs r1, 0x14
- bl __modsi3
-_08104688:
- lsls r0, 16
- lsrs r5, r0, 16
- ldrb r0, [r4, 0x10]
- adds r0, 0x40
- strh r0, [r4, 0x10]
-_08104692:
- lsls r0, r5, 16
- asrs r5, r0, 16
- cmp r5, 0
- bne _081046B4
- movs r0, 0x1
- bl sub_8102C48
- ldr r1, _081046BC @ =gSharedMem
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1, 0x5]
- cmp r0, r1
- bne _081046B4
- strh r5, [r4, 0x10]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_081046B4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081046BC: .4byte gSharedMem
- thumb_func_end sub_810463C
-
- thumb_func_start sub_81046C0
-sub_81046C0: @ 81046C0
- push {r4-r7,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- movs r7, 0
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3B
- ble _08104758
- bl StopMapMusic
- bl sub_81056C0
- bl sub_8105804
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- ldr r5, _08104710 @ =gSharedMem
- ldrb r0, [r5, 0x5]
- cmp r0, 0
- bne _0810471C
- movs r0, 0xA0
- strh r0, [r4, 0x10]
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08104714 @ =gSprites
- adds r0, r1
- movs r1, 0x5
- bl StartSpriteAnimIfDifferent
- ldr r0, _08104718 @ =0x00000187
- bl PlayFanfare
- b _08104758
- .align 2, 0
-_08104710: .4byte gSharedMem
-_08104714: .4byte gSprites
-_08104718: .4byte 0x00000187
-_0810471C:
- movs r0, 0xC0
- strh r0, [r4, 0x10]
- adds r6, r5, 0
- adds r6, 0x3F
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08104760 @ =gSprites
- adds r0, r4
- movs r1, 0x4
- bl StartSpriteAnimIfDifferent
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x2B
- strb r7, [r0]
- ldrb r0, [r5, 0x2]
- cmp r0, 0
- beq _08104750
- bl sub_8104098
- strb r7, [r5, 0x2]
-_08104750:
- movs r0, 0xC3
- lsls r0, 1
- bl PlayFanfare
-_08104758:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08104760: .4byte gSprites
- thumb_func_end sub_81046C0
-
- thumb_func_start sub_8104764
-sub_8104764: @ 8104764
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x10]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0810477C
- subs r0, r1, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bne _0810478C
-_0810477C:
- bl sub_81040C8
- lsls r0, 24
- cmp r0, 0
- bne _0810478C
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0810478C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8104764
-
- thumb_func_start sub_8104794
-sub_8104794: @ 8104794
- push {r4,lr}
- adds r3, r0, 0
- ldr r1, _081047D4 @ =gSpriteCoordOffsetX
- ldrh r0, [r1]
- subs r0, 0x8
- strh r0, [r1]
- ldrh r2, [r3, 0xA]
- adds r2, 0x8
- strh r2, [r3, 0xA]
- ldrh r0, [r3, 0xE]
- adds r0, 0x8
- strh r0, [r3, 0xE]
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- subs r0, 0x8
- movs r1, 0xFF
- ands r0, r1
- lsrs r4, r0, 3
- ldr r1, _081047D8 @ =REG_BG1HOFS
- ldr r0, _081047DC @ =0x000001ff
- ands r2, r0
- strh r2, [r1]
- ldrh r0, [r3, 0xE]
- lsls r0, 16
- asrs r0, 19
- cmp r0, 0x19
- bgt _081047E0
- adds r0, r4, 0
- bl sub_8104A88
- b _081047E6
- .align 2, 0
-_081047D4: .4byte gSpriteCoordOffsetX
-_081047D8: .4byte REG_BG1HOFS
-_081047DC: .4byte 0x000001ff
-_081047E0:
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
-_081047E6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8104794
-
- thumb_func_start sub_81047EC
-sub_81047EC: @ 81047EC
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r4, _08104834 @ =gSharedMem
- movs r6, 0
- strb r6, [r4, 0xB]
- ldrb r0, [r4, 0x5]
- strb r0, [r4, 0xA]
- ldr r0, _08104838 @ =gSpriteCoordOffsetX
- strh r6, [r0]
- ldr r0, _0810483C @ =REG_BG1HOFS
- strh r6, [r0]
- movs r0, 0x8
- strh r0, [r4, 0x1A]
- bl sub_810514C
- bl sub_81054B8
- bl sub_8105524
- adds r0, r4, 0
- adds r0, 0x60
- ldrh r0, [r0]
- bl PlayNewMapMusic
- ldrb r0, [r4, 0xA]
- cmp r0, 0
- bne _08104844
- ldr r0, _08104840 @ =sub_810434C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- b _0810485A
- .align 2, 0
-_08104834: .4byte gSharedMem
-_08104838: .4byte gSpriteCoordOffsetX
-_0810483C: .4byte REG_BG1HOFS
-_08104840: .4byte sub_810434C
-_08104844:
- movs r0, 0x4
- bl sub_8104CAC
- bl dp15_jump_random_unknown
- strh r0, [r5, 0xA]
- strh r6, [r5, 0xC]
- strh r6, [r5, 0xE]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
-_0810485A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81047EC
-
- thumb_func_start sub_8104860
-sub_8104860: @ 8104860
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r5, _0810487C @ =gSharedMem
- ldrh r0, [r5, 0x1A]
- lsls r6, r0, 16
- asrs r1, r6, 16
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _08104880
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _081048A2
- .align 2, 0
-_0810487C: .4byte gSharedMem
-_08104880:
- movs r1, 0x1C
- ldrsh r0, [r5, r1]
- movs r1, 0x18
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _081048A2
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _081048A2
- asrs r0, r6, 17
- strh r0, [r5, 0x1A]
-_081048A2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8104860
-
- thumb_func_start sub_81048A8
-sub_81048A8: @ 81048A8
- push {lr}
- bl sub_8104E18
- lsls r0, 24
- cmp r0, 0
- beq _081048C2
- ldr r0, _081048C8 @ =sub_810434C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_081048C2:
- pop {r0}
- bx r0
- .align 2, 0
-_081048C8: .4byte sub_810434C
- thumb_func_end sub_81048A8
-
- thumb_func_start sub_81048CC
-sub_81048CC: @ 81048CC
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_81054B8
- bl sub_81056C0
- bl sub_8105804
- bl sub_8105854
- ldr r5, _08104934 @ =gSprites
- ldr r3, _08104938 @ =gSharedMem
- adds r0, r3, 0
- adds r0, 0x4E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r3, 0x3F
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x5
- bl StartSpriteAnimIfDifferent
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x8]
- movs r0, 0x4
- strh r0, [r4, 0x10]
- strh r1, [r4, 0x12]
- bl StopMapMusic
- ldr r0, _0810493C @ =0x00000187
- bl PlayFanfare
- movs r0, 0xB2
- bl PlaySE
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08104934: .4byte gSprites
-_08104938: .4byte gSharedMem
-_0810493C: .4byte 0x00000187
- thumb_func_end sub_81048CC
-
- thumb_func_start sub_8104940
-sub_8104940: @ 8104940
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, _081049B8 @ =gSpriteCoordOffsetY
- ldrh r1, [r4, 0x10]
- strh r1, [r0]
- ldr r0, _081049BC @ =REG_BG1VOFS
- strh r1, [r0]
- ldrh r1, [r4, 0x12]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810495E
- ldrh r0, [r4, 0x10]
- negs r0, r0
- strh r0, [r4, 0x10]
-_0810495E:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- movs r1, 0x1F
- ands r0, r1
- cmp r0, 0
- bne _08104974
- ldrh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 17
- strh r0, [r4, 0x10]
-_08104974:
- movs r0, 0x10
- ldrsh r5, [r4, r0]
- cmp r5, 0
- bne _081049B0
- bl sub_81058A0
- bl sub_81058C4
- bl sub_8105284
- bl sub_81059E8
- ldr r2, _081049C0 @ =gSprites
- ldr r0, _081049C4 @ =gSharedMem
- adds r0, 0x4E
- 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]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- strh r5, [r4, 0x12]
-_081049B0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081049B8: .4byte gSpriteCoordOffsetY
-_081049BC: .4byte REG_BG1VOFS
-_081049C0: .4byte gSprites
-_081049C4: .4byte gSharedMem
- thumb_func_end sub_8104940
-
- thumb_func_start sub_81049C8
-sub_81049C8: @ 81049C8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _081049F0 @ =gSpriteCoordOffsetY
- movs r1, 0
- strh r1, [r0]
- ldr r0, _081049F4 @ =REG_BG1VOFS
- strh r1, [r0]
- bl sub_8105ACC
- lsls r0, 24
- cmp r0, 0
- beq _081049EA
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- bl sub_8105AEC
-_081049EA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081049F0: .4byte gSpriteCoordOffsetY
-_081049F4: .4byte REG_BG1VOFS
- thumb_func_end sub_81049C8
-
- thumb_func_start sub_81049F8
-sub_81049F8: @ 81049F8
- push {lr}
- ldr r0, _08104A30 @ =gSpriteCoordOffsetX
- movs r1, 0
- strh r1, [r0]
- ldr r0, _08104A34 @ =REG_BG1HOFS
- strh r1, [r0]
- ldr r0, _08104A38 @ =gSharedMem
- adds r0, 0x60
- ldrh r0, [r0]
- bl PlayNewMapMusic
- bl sub_810514C
- bl sub_8105554
- bl sub_8105524
- bl sub_81059B8
- ldr r0, _08104A3C @ =sub_810434C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- pop {r0}
- bx r0
- .align 2, 0
-_08104A30: .4byte gSpriteCoordOffsetX
-_08104A34: .4byte REG_BG1HOFS
-_08104A38: .4byte gSharedMem
-_08104A3C: .4byte sub_810434C
- thumb_func_end sub_81049F8
-
- thumb_func_start sub_8104A40
-sub_8104A40: @ 8104A40
- push {r4-r7,lr}
- movs r3, 0x4
- ldr r7, _08104A80 @ =gReelTimeWindowTilemap
- lsls r1, 16
- asrs r5, r1, 16
- lsls r0, 16
- asrs r4, r0, 16
- ldr r6, _08104A84 @ =0x0600e000
-_08104A50:
- lsls r2, r3, 16
- asrs r2, 16
- subs r1, r2, 0x4
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r5, r0
- lsls r0, 1
- adds r0, r7
- ldrh r1, [r0]
- lsls r0, r2, 5
- adds r0, r4
- lsls r0, 1
- adds r0, r6
- strh r1, [r0]
- adds r2, 0x1
- lsls r2, 16
- lsrs r3, r2, 16
- asrs r2, 16
- cmp r2, 0xE
- ble _08104A50
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08104A80: .4byte gReelTimeWindowTilemap
-_08104A84: .4byte 0x0600e000
- thumb_func_end sub_8104A40
-
- thumb_func_start sub_8104A88
-sub_8104A88: @ 8104A88
- push {r4,r5,lr}
- movs r2, 0x4
- lsls r0, 16
- asrs r3, r0, 16
- ldr r5, _08104AB4 @ =0x0600e000
- movs r4, 0
-_08104A94:
- lsls r1, r2, 16
- asrs r1, 16
- lsls r0, r1, 5
- adds r0, r3
- lsls r0, 1
- adds r0, r5
- strh r4, [r0]
- adds r1, 0x1
- lsls r1, 16
- lsrs r2, r1, 16
- asrs r1, 16
- cmp r1, 0xE
- ble _08104A94
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08104AB4: .4byte 0x0600e000
- thumb_func_end sub_8104A88
-
- thumb_func_start sub_8104AB8
-sub_8104AB8: @ 8104AB8
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _08104AE4 @ =sub_8104B0C
- adds r0, r5, 0
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08104AE8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- bl _call_via_r5
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08104AE4: .4byte sub_8104B0C
-_08104AE8: .4byte gTasks
- thumb_func_end sub_8104AB8
-
- thumb_func_start sub_8104AEC
-sub_8104AEC: @ 8104AEC
- push {lr}
- ldr r0, _08104B00 @ =sub_8104B0C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _08104B04
- movs r0, 0
- b _08104B06
- .align 2, 0
-_08104B00: .4byte sub_8104B0C
-_08104B04:
- movs r0, 0x1
-_08104B06:
- pop {r1}
- bx r1
- thumb_func_end sub_8104AEC
-
- thumb_func_start sub_8104B0C
-sub_8104B0C: @ 8104B0C
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _08104B34 @ =gUnknown_083ECC30
- ldr r2, _08104B38 @ =gTasks
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0x8
- ldrsh r1, [r0, r2]
- lsls r1, 2
- adds r1, r3
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_08104B34: .4byte gUnknown_083ECC30
-_08104B38: .4byte gTasks
- thumb_func_end sub_8104B0C
-
- thumb_func_start sub_8104B3C
-sub_8104B3C: @ 8104B3C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8104B3C
-
- thumb_func_start sub_8104B60
-sub_8104B60: @ 8104B60
- push {lr}
- adds r2, r0, 0
- ldr r0, _08104B7C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08104B76
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
-_08104B76:
- pop {r0}
- bx r0
- .align 2, 0
-_08104B7C: .4byte gPaletteFade
- thumb_func_end sub_8104B60
-
- thumb_func_start sub_8104B80
-sub_8104B80: @ 8104B80
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- bl sub_8104DA4
- bl sub_81065DC
- ldr r0, _08104BC0 @ =gWindowConfig_81E7144
- bl BasicInitMenuWindow
- ldr r0, _08104BC4 @ =gOtherText_ReelTime
- movs r1, 0xA
- movs r2, 0x20
- movs r3, 0x1
- bl MenuPrint_PixelCoords
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08104BC0: .4byte gWindowConfig_81E7144
-_08104BC4: .4byte gOtherText_ReelTime
- thumb_func_end sub_8104B80
-
- thumb_func_start sub_8104BC8
-sub_8104BC8: @ 8104BC8
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r0, _08104BF8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- beq _08104BF0
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_08104BF0:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08104BF8: .4byte gMain
- thumb_func_end sub_8104BC8
-
- thumb_func_start sub_8104BFC
-sub_8104BFC: @ 8104BFC
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- bl MenuZeroFillScreen
- ldr r0, _08104C3C @ =gWindowConfig_81E7128
- bl BasicInitMenuWindow
- bl sub_81064B8
- ldrb r0, [r4, 0xA]
- bl sub_8104CAC
- ldr r0, _08104C40 @ =gSharedMem
- ldrb r0, [r0, 0x2]
- bl sub_810423C
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08104C3C: .4byte gWindowConfig_81E7128
-_08104C40: .4byte gSharedMem
- thumb_func_end sub_8104BFC
-
- thumb_func_start sub_8104C44
-sub_8104C44: @ 8104C44
- push {lr}
- ldr r0, _08104C58 @ =sub_8104B0C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- pop {r0}
- bx r0
- .align 2, 0
-_08104C58: .4byte sub_8104B0C
- thumb_func_end sub_8104C44
-
- thumb_func_start sub_8104C5C
-sub_8104C5C: @ 8104C5C
- push {lr}
- ldr r0, _08104C9C @ =sub_8104E74
- movs r1, 0x3
- bl CreateTask
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _08104CA0 @ =gSharedMem
- adds r0, 0x3D
- strb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _08104CA4 @ =gTasks
- adds r0, r1
- ldr r1, _08104CA8 @ =0x0000ffff
- strh r1, [r0, 0xA]
- movs r1, 0x4
- adds r2, r0, 0
- adds r2, 0x8
- movs r3, 0x40
-_08104C86:
- lsls r0, r1, 1
- adds r0, r2, r0
- strh r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _08104C86
- pop {r0}
- bx r0
- .align 2, 0
-_08104C9C: .4byte sub_8104E74
-_08104CA0: .4byte gSharedMem
-_08104CA4: .4byte gTasks
-_08104CA8: .4byte 0x0000ffff
- thumb_func_end sub_8104C5C
-
-.section .text_8104D30
-
- thumb_func_start sub_8104D30
-sub_8104D30: @ 8104D30
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- mov r8, r1
- ldr r4, [sp, 0x1C]
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08104D84 @ =gSharedMem
- adds r0, 0x3D
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _08104D88 @ =gTasks
- adds r0, r1
- mov r12, r0
- movs r5, 0x4
- lsls r4, 16
- asrs r6, r4, 16
- lsls r2, 16
- lsls r3, 16
-_08104D5C:
- lsls r0, r5, 1
- mov r1, r12
- adds r1, 0x8
- adds r4, r1, r0
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x40
- bne _08104D8C
- str r6, [sp]
- adds r0, r7, 0
- mov r1, r8
- asrs r2, 16
- asrs r3, 16
- bl sub_8105BF8
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- b _08104D96
- .align 2, 0
-_08104D84: .4byte gSharedMem
-_08104D88: .4byte gTasks
-_08104D8C:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _08104D5C
-_08104D96:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8104D30
-
- thumb_func_start sub_8104DA4
-sub_8104DA4: @ 8104DA4
- push {r4-r6,lr}
- ldr r0, _08104E04 @ =gSharedMem
- adds r0, 0x3D
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _08104E08 @ =gTasks
- adds r4, r0, r1
- ldrh r1, [r4, 0xA]
- ldr r0, _08104E0C @ =0x0000ffff
- cmp r1, r0
- beq _08104DCE
- ldr r0, _08104E10 @ =gUnknown_083ED064
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- bl _call_via_r0
-_08104DCE:
- movs r5, 0x4
- adds r6, r4, 0
- adds r6, 0x8
-_08104DD4:
- lsls r0, r5, 1
- adds r4, r6, r0
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x40
- beq _08104DF4
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08104E14 @ =gSprites
- adds r0, r1
- bl DestroySprite
- movs r0, 0x40
- strh r0, [r4]
-_08104DF4:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _08104DD4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08104E04: .4byte gSharedMem
-_08104E08: .4byte gTasks
-_08104E0C: .4byte 0x0000ffff
-_08104E10: .4byte gUnknown_083ED064
-_08104E14: .4byte gSprites
- thumb_func_end sub_8104DA4
-
- thumb_func_start sub_8104E18
-sub_8104E18: @ 8104E18
- push {r4,r5,lr}
- ldr r0, _08104E54 @ =gSharedMem
- adds r0, 0x3D
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _08104E58 @ =gTasks
- adds r0, r1
- movs r2, 0x4
- adds r3, r0, 0
- adds r3, 0x8
- ldr r4, _08104E5C @ =gSprites
-_08104E32:
- lsls r0, r2, 1
- adds r1, r3, r0
- movs r5, 0
- ldrsh r0, [r1, r5]
- cmp r0, 0x40
- beq _08104E60
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- movs r5, 0x3C
- ldrsh r0, [r1, r5]
- cmp r0, 0
- beq _08104E60
- movs r0, 0
- b _08104E6C
- .align 2, 0
-_08104E54: .4byte gSharedMem
-_08104E58: .4byte gTasks
-_08104E5C: .4byte gSprites
-_08104E60:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _08104E32
- movs r0, 0x1
-_08104E6C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8104E18
-
- thumb_func_start sub_8104E74
-sub_8104E74: @ 8104E74
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _08104E9C @ =gUnknown_083ECC54
- ldr r2, _08104EA0 @ =gTasks
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0x8
- ldrsh r1, [r0, r2]
- lsls r1, 2
- adds r1, r3
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_08104E9C: .4byte gUnknown_083ECC54
-_08104EA0: .4byte gTasks
- thumb_func_end sub_8104E74
-
- thumb_func_start nullsub_69
-nullsub_69: @ 8104EA4
- bx lr
- thumb_func_end nullsub_69
-
- thumb_func_start sub_8104EA8
-sub_8104EA8: @ 8104EA8
- push {r4-r7,lr}
- movs r6, 0
- movs r0, 0x30
-_08104EAE:
- movs r4, 0
- lsls r5, r0, 16
- lsls r7, r6, 16
-_08104EB4:
- ldr r0, _08104F0C @ =gSpriteTemplate_83ED414
- asrs r1, r5, 16
- movs r2, 0
- movs r3, 0xE
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08104F10 @ =gSprites
- adds r1, r0
- ldrb r0, [r1, 0x5]
- movs r2, 0xC
- orrs r0, r2
- strb r0, [r1, 0x5]
- strh r6, [r1, 0x2E]
- strh r4, [r1, 0x30]
- ldr r0, _08104F14 @ =0x0000ffff
- strh r0, [r1, 0x34]
- lsls r0, r4, 16
- movs r1, 0xC0
- lsls r1, 13
- adds r0, r1
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x77
- ble _08104EB4
- movs r2, 0x80
- lsls r2, 9
- adds r1, r7, r2
- movs r2, 0xA0
- lsls r2, 14
- adds r0, r5, r2
- lsrs r0, 16
- lsrs r6, r1, 16
- asrs r1, 16
- cmp r1, 0x2
- ble _08104EAE
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08104F0C: .4byte gSpriteTemplate_83ED414
-_08104F10: .4byte gSprites
-_08104F14: .4byte 0x0000ffff
- thumb_func_end sub_8104EA8
-
- thumb_func_start sub_8104F18
-sub_8104F18: @ 8104F18
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _08104F88 @ =gSharedMem
- movs r0, 0x2E
- ldrsh r1, [r5, r0]
- lsls r1, 1
- adds r0, r4, 0
- adds r0, 0x1C
- adds r1, r0
- ldrh r0, [r5, 0x30]
- ldrh r1, [r1]
- adds r0, r1
- strh r0, [r5, 0x32]
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- movs r1, 0x78
- bl __modsi3
- strh r0, [r5, 0x32]
- movs r2, 0x2E
- ldrsh r1, [r5, r2]
- lsls r1, 1
- adds r4, 0x22
- adds r1, r4
- ldrh r1, [r1]
- adds r1, 0x1C
- adds r0, r1
- strh r0, [r5, 0x22]
- ldrh r4, [r5, 0x2E]
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- movs r1, 0x18
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl sub_8102BA4
- lsls r0, 24
- lsrs r0, 24
- bl GetSpriteTileStartByTag
- adds r1, r5, 0
- adds r1, 0x40
- strh r0, [r1]
- adds r0, r5, 0
- bl SetSpriteSheetFrameTileNum
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08104F88: .4byte gSharedMem
- thumb_func_end sub_8104F18
-
- thumb_func_start sub_8104F8C
-sub_8104F8C: @ 8104F8C
- push {r4-r6,lr}
- movs r4, 0xCB
- movs r5, 0x1
- ldr r6, _08104FF0 @ =0x0000270f
-_08104F94:
- lsls r4, 16
- asrs r4, 16
- lsls r5, 16
- asrs r5, 16
- adds r0, r4, 0
- movs r1, 0x17
- movs r2, 0
- adds r3, r5, 0
- bl sub_8104FF4
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 17
- subs r4, 0x7
- lsls r4, 16
- lsrs r4, 16
- lsrs r5, r0, 16
- asrs r0, 16
- cmp r0, r6
- ble _08104F94
- movs r4, 0xEB
- movs r5, 0x1
- ldr r6, _08104FF0 @ =0x0000270f
-_08104FC2:
- lsls r4, 16
- asrs r4, 16
- lsls r5, 16
- asrs r5, 16
- adds r0, r4, 0
- movs r1, 0x17
- movs r2, 0x1
- adds r3, r5, 0
- bl sub_8104FF4
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 17
- subs r4, 0x7
- lsls r4, 16
- lsrs r4, 16
- lsrs r5, r0, 16
- asrs r0, 16
- cmp r0, r6
- ble _08104FC2
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08104FF0: .4byte 0x0000270f
- thumb_func_end sub_8104F8C
-
- thumb_func_start sub_8104FF4
-sub_8104FF4: @ 8104FF4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- adds r6, r1, 0
- mov r8, r2
- adds r4, r3, 0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, _08105060 @ =gSpriteTemplate_83ED42C
- lsls r5, 16
- asrs r5, 16
- lsls r6, 16
- asrs r6, 16
- adds r1, r5, 0
- adds r2, r6, 0
- movs r3, 0xD
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08105064 @ =gSprites
- adds r2, r0
- ldrb r1, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2, 0x5]
- mov r0, r8
- strh r0, [r2, 0x2E]
- strh r4, [r2, 0x30]
- lsls r4, 16
- asrs r4, 16
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 1
- strh r0, [r2, 0x32]
- ldr r0, _08105068 @ =0x0000ffff
- strh r0, [r2, 0x34]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08105060: .4byte gSpriteTemplate_83ED42C
-_08105064: .4byte gSprites
-_08105068: .4byte 0x0000ffff
- thumb_func_end sub_8104FF4
-
- thumb_func_start sub_810506C
-sub_810506C: @ 810506C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _081050C0 @ =gSharedMem
- ldrh r2, [r1, 0xC]
- movs r3, 0x2E
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _0810507E
- ldrh r2, [r1, 0xE]
-_0810507E:
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, r2
- beq _081050B8
- strh r2, [r4, 0x34]
- ldrh r1, [r4, 0x32]
- adds r0, r2, 0
- bl __umodsi3
- lsls r0, 16
- lsrs r2, r0, 16
- ldrh r1, [r4, 0x30]
- adds r0, r2, 0
- bl __udivsi3
- lsls r0, 16
- movs r3, 0xE0
- lsls r3, 11
- adds r0, r3
- lsrs r2, r0, 16
- adds r0, r2, 0
- bl GetSpriteTileStartByTag
- adds r1, r4, 0
- adds r1, 0x40
- strh r0, [r1]
- adds r0, r4, 0
- bl SetSpriteSheetFrameTileNum
-_081050B8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081050C0: .4byte gSharedMem
- thumb_func_end sub_810506C
-
- thumb_func_start sub_81050C4
-sub_81050C4: @ 81050C4
- push {lr}
- ldr r0, _081050F4 @ =gSpriteTemplate_83ED444
- movs r1, 0x58
- movs r2, 0x48
- movs r3, 0xF
- bl CreateSprite
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _081050F8 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldr r1, _081050FC @ =gSubspriteTables_83ED704
- bl SetSubspriteTables
- pop {r0}
- bx r0
- .align 2, 0
-_081050F4: .4byte gSpriteTemplate_83ED444
-_081050F8: .4byte gSprites
-_081050FC: .4byte gSubspriteTables_83ED704
- thumb_func_end sub_81050C4
-
- thumb_func_start sub_8105100
-sub_8105100: @ 8105100
- push {lr}
- ldr r0, _08105140 @ =gSpriteTemplate_83ED45C
- movs r1, 0x8C
- lsls r1, 1
- movs r2, 0x50
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08105144 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldrb r3, [r2, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- movs r3, 0x4
- orrs r1, r3
- strb r1, [r2, 0x5]
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r3, 0x2
- orrs r1, r3
- strb r1, [r2]
- ldr r1, _08105148 @ =gSharedMem
- adds r1, 0x3F
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08105140: .4byte gSpriteTemplate_83ED45C
-_08105144: .4byte gSprites
-_08105148: .4byte gSharedMem
- thumb_func_end sub_8105100
-
- thumb_func_start sub_810514C
-sub_810514C: @ 810514C
- push {lr}
- ldr r0, _08105168 @ =gSharedMem
- adds r0, 0x3F
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0810516C @ =gSprites
- adds r0, r1
- bl DestroySprite
- pop {r0}
- bx r0
- .align 2, 0
-_08105168: .4byte gSharedMem
-_0810516C: .4byte gSprites
- thumb_func_end sub_810514C
-
- thumb_func_start sub_8105170
-sub_8105170: @ 8105170
- push {lr}
- adds r2, r0, 0
- movs r0, 0
- strh r0, [r2, 0x24]
- strh r0, [r2, 0x26]
- adds r0, r2, 0
- adds r0, 0x2A
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _081051B6
- movs r0, 0x8
- strh r0, [r2, 0x24]
- strh r0, [r2, 0x26]
- adds r0, r2, 0
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0
- beq _081051A4
- adds r0, r2, 0
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r0, 0x3F
- ands r0, r1
- cmp r0, 0
- bne _081051B2
- b _081051B6
-_081051A4:
- adds r0, r2, 0
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r0, 0x3F
- ands r0, r1
- cmp r0, 0
- bne _081051B6
-_081051B2:
- ldr r0, _081051BC @ =0x0000fff8
- strh r0, [r2, 0x26]
-_081051B6:
- pop {r0}
- bx r0
- .align 2, 0
-_081051BC: .4byte 0x0000fff8
- thumb_func_end sub_8105170
-
- thumb_func_start sub_81051C0
-sub_81051C0: @ 81051C0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _0810526C @ =gSpriteTemplate_83ED474
- movs r7, 0xB8
- lsls r7, 1
- adds r1, r7, 0
- movs r2, 0x34
- movs r3, 0x7
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, _08105270 @ =gSprites
- mov r10, r1
- adds r2, r0, r1
- ldrb r1, [r2, 0x5]
- movs r5, 0xD
- negs r5, r5
- adds r0, r5, 0
- ands r0, r1
- movs r3, 0x4
- mov r9, r3
- mov r1, r9
- orrs r0, r1
- strb r0, [r2, 0x5]
- adds r1, r2, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r3, 0x2
- mov r8, r3
- mov r3, r8
- orrs r0, r3
- strb r0, [r1]
- ldr r1, _08105274 @ =gSubspriteTables_83ED73C
- adds r0, r2, 0
- bl SetSubspriteTables
- ldr r6, _08105278 @ =gSharedMem
- adds r0, r6, 0
- adds r0, 0x49
- strb r4, [r0]
- ldr r0, _0810527C @ =gSpriteTemplate_83ED48C
- adds r1, r7, 0
- movs r2, 0x54
- movs r3, 0x7
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- mov r1, r10
- adds r2, r0, r1
- ldrb r0, [r2, 0x5]
- ands r5, r0
- mov r3, r9
- orrs r5, r3
- strb r5, [r2, 0x5]
- adds r1, r2, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- mov r3, r8
- orrs r0, r3
- strb r0, [r1]
- ldr r1, _08105280 @ =gSubspriteTables_83ED75C
- adds r0, r2, 0
- bl SetSubspriteTables
- adds r6, 0x4A
- strb r4, [r6]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810526C: .4byte gSpriteTemplate_83ED474
-_08105270: .4byte gSprites
-_08105274: .4byte gSubspriteTables_83ED73C
-_08105278: .4byte gSharedMem
-_0810527C: .4byte gSpriteTemplate_83ED48C
-_08105280: .4byte gSubspriteTables_83ED75C
- thumb_func_end sub_81051C0
-
- thumb_func_start sub_8105284
-sub_8105284: @ 8105284
- push {r4,lr}
- ldr r0, _081052D8 @ =gSpriteTemplate_83ED4A4
- ldr r1, _081052DC @ =gSpriteCoordOffsetX
- ldrh r2, [r1]
- movs r1, 0xA8
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- movs r2, 0x50
- movs r3, 0x7
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, _081052E0 @ =gSprites
- adds r0, r1
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x5]
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- ldr r1, _081052E4 @ =gSubspriteTables_83ED78C
- bl SetSubspriteTables
- ldr r0, _081052E8 @ =gSharedMem
- adds r0, 0x42
- strb r4, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081052D8: .4byte gSpriteTemplate_83ED4A4
-_081052DC: .4byte gSpriteCoordOffsetX
-_081052E0: .4byte gSprites
-_081052E4: .4byte gSubspriteTables_83ED78C
-_081052E8: .4byte gSharedMem
- thumb_func_end sub_8105284
-
- thumb_func_start sub_81052EC
-sub_81052EC: @ 81052EC
- push {r4-r7,lr}
- movs r4, 0
- movs r5, 0
- ldr r6, _08105350 @ =gSharedMem + 0x4B
-_081052F4:
- ldr r0, _08105354 @ =gSpriteTemplate_83ED4BC
- movs r1, 0xB8
- lsls r1, 1
- movs r2, 0
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- ldr r1, _08105358 @ =gSprites
- adds r3, r1
- ldrb r2, [r3, 0x5]
- movs r7, 0xD
- negs r7, r7
- adds r1, r7, 0
- ands r2, r1
- movs r1, 0x4
- orrs r2, r1
- strb r2, [r3, 0x5]
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- ldrb r1, [r1]
- movs r2, 0x2
- orrs r1, r2
- mov r2, r12
- strb r1, [r2]
- strh r5, [r3, 0x3C]
- adds r1, r4, r6
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r5, 16
- movs r7, 0xA0
- lsls r7, 13
- adds r0, r7
- lsrs r5, r0, 16
- cmp r4, 0x2
- bls _081052F4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08105350: .4byte gSharedMem + 0x4B
-_08105354: .4byte gSpriteTemplate_83ED4BC
-_08105358: .4byte gSprites
- thumb_func_end sub_81052EC
-
- thumb_func_start sub_810535C
-sub_810535C: @ 810535C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _0810539C @ =gSharedMem
- ldrh r0, [r4, 0x3C]
- ldrh r1, [r1, 0x14]
- adds r0, r1
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x28
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- adds r1, r0, 0
- adds r1, 0x3B
- strh r1, [r4, 0x22]
- movs r1, 0x14
- bl __divsi3
- lsls r0, 16
- asrs r0, 16
- bl sub_8102C48
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnimIfDifferent
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810539C: .4byte gSharedMem
- thumb_func_end sub_810535C
-
- thumb_func_start sub_81053A0
-sub_81053A0: @ 81053A0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r1, 0xB8
- lsls r1, 1
- ldr r0, _0810544C @ =gSpriteTemplate_83ED4D4
- movs r2, 0x64
- movs r3, 0x9
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r7, _08105450 @ =gSprites
- adds r2, r0, r7
- adds r1, r2, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r3, 0x2
- mov r10, r3
- mov r3, r10
- orrs r0, r3
- strb r0, [r1]
- ldrb r1, [r2, 0x5]
- movs r5, 0xD
- negs r5, r5
- adds r0, r5, 0
- ands r0, r1
- movs r1, 0x4
- mov r8, r1
- mov r3, r8
- orrs r0, r3
- strb r0, [r2, 0x5]
- ldr r0, _08105454 @ =gSubspriteTables_83ED7B4
- mov r9, r0
- adds r0, r2, 0
- mov r1, r9
- bl SetSubspriteTables
- ldr r6, _08105458 @ =gSharedMem
- adds r0, r6, 0
- adds r0, 0x4E
- strb r4, [r0]
- movs r1, 0x90
- lsls r1, 1
- ldr r0, _0810544C @ =gSpriteTemplate_83ED4D4
- movs r2, 0x68
- 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
- adds r2, r0, r7
- adds r1, r2, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- mov r3, r10
- orrs r0, r3
- strb r0, [r1]
- ldrb r0, [r2, 0x5]
- ands r5, r0
- mov r0, r8
- orrs r5, r0
- strb r5, [r2, 0x5]
- adds r0, r2, 0
- mov r1, r9
- bl SetSubspriteTables
- adds r6, 0x4F
- strb r4, [r6]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810544C: .4byte gSpriteTemplate_83ED4D4
-_08105450: .4byte gSprites
-_08105454: .4byte gSubspriteTables_83ED7B4
-_08105458: .4byte gSharedMem
- thumb_func_end sub_81053A0
-
- thumb_func_start sub_810545C
-sub_810545C: @ 810545C
- push {r4,lr}
- ldr r0, _081054A8 @ =gSpriteTemplate_83ED4EC
- movs r1, 0xB8
- lsls r1, 1
- movs r2, 0x4C
- movs r3, 0xB
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, _081054AC @ =gSprites
- adds r0, r1
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldr r1, _081054B0 @ =gSubspriteTables_83ED7D4
- bl SetSubspriteTables
- ldr r0, _081054B4 @ =gSharedMem
- adds r0, 0x40
- strb r4, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081054A8: .4byte gSpriteTemplate_83ED4EC
-_081054AC: .4byte gSprites
-_081054B0: .4byte gSubspriteTables_83ED7D4
-_081054B4: .4byte gSharedMem
- thumb_func_end sub_810545C
-
- thumb_func_start sub_81054B8
-sub_81054B8: @ 81054B8
- push {r4,r5,lr}
- ldr r4, _08105518 @ =gSharedMem
- adds r0, r4, 0
- adds r0, 0x40
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0810551C @ =gSprites
- adds r0, r1
- bl DestroySprite
- movs r5, 0
- adds r4, 0x49
-_081054D4:
- adds r0, r5, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0810551C @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _081054D4
- movs r5, 0
- ldr r4, _08105520 @ =gSharedMem + 0x4B
-_081054F4:
- adds r0, r5, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0810551C @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _081054F4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08105518: .4byte gSharedMem
-_0810551C: .4byte gSprites
-_08105520: .4byte gSharedMem + 0x4B
- thumb_func_end sub_81054B8
-
- thumb_func_start sub_8105524
-sub_8105524: @ 8105524
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _0810554C @ =gSharedMem + 0x4E
-_0810552A:
- adds r0, r4, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08105550 @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bls _0810552A
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810554C: .4byte gSharedMem + 0x4E
-_08105550: .4byte gSprites
- thumb_func_end sub_8105524
-
- thumb_func_start sub_8105554
-sub_8105554: @ 8105554
- push {lr}
- ldr r0, _08105570 @ =gSharedMem
- adds r0, 0x42
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08105574 @ =gSprites
- adds r0, r1
- bl DestroySprite
- pop {r0}
- bx r0
- .align 2, 0
-_08105570: .4byte gSharedMem
-_08105574: .4byte gSprites
- thumb_func_end sub_8105554
-
- thumb_func_start sub_8105578
-sub_8105578: @ 8105578
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- ldr r0, _0810561C @ =gSpriteTemplate_83ED504
- mov r10, r0
- movs r1, 0x98
- movs r2, 0x20
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r2, _08105620 @ =gSprites
- mov r9, r2
- adds r3, r1, r2
- ldrb r2, [r3, 0x5]
- movs r4, 0xD
- negs r4, r4
- adds r1, r4, 0
- ands r1, r2
- movs r2, 0x4
- mov r8, r2
- mov r2, r8
- orrs r1, r2
- strb r1, [r3, 0x5]
- adds r5, r3, 0
- adds r5, 0x3F
- ldrb r1, [r5]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r5]
- ldr r5, _08105624 @ =gSharedMem
- adds r1, r5, 0
- adds r1, 0x50
- strb r0, [r1]
- movs r0, 0x8
- strh r0, [r3, 0x2E]
- ldr r0, _08105628 @ =0x0000ffff
- strh r0, [r3, 0x30]
- movs r0, 0x1
- negs r0, r0
- strh r0, [r3, 0x32]
- movs r6, 0x20
- strh r6, [r3, 0x3C]
- mov r0, r10
- movs r1, 0xB8
- movs r2, 0x20
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- mov r2, r9
- adds r3, r1, r2
- ldrb r1, [r3, 0x5]
- ands r4, r1
- mov r1, r8
- orrs r4, r1
- strb r4, [r3, 0x5]
- adds r5, 0x51
- strb r0, [r5]
- movs r0, 0x1
- strh r0, [r3, 0x30]
- subs r0, 0x2
- strh r0, [r3, 0x32]
- strh r6, [r3, 0x3C]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810561C: .4byte gSpriteTemplate_83ED504
-_08105620: .4byte gSprites
-_08105624: .4byte gSharedMem
-_08105628: .4byte 0x0000ffff
- thumb_func_end sub_8105578
-
- thumb_func_start sub_810562C
-sub_810562C: @ 810562C
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- movs r1, 0x2E
- ldrsh r4, [r2, r1]
- cmp r4, 0
- beq _08105650
- subs r0, 0x1
- movs r1, 0
- strh r0, [r2, 0x2E]
- strh r1, [r2, 0x24]
- strh r1, [r2, 0x26]
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- b _08105682
-_08105650:
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x26]
- adds r0, r1
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x34]
- adds r0, 0x1
- strh r0, [r2, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _08105682
- ldrh r0, [r2, 0x3C]
- strh r0, [r2, 0x2E]
- strh r4, [r2, 0x34]
-_08105682:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810562C
-
- thumb_func_start sub_8105688
-sub_8105688: @ 8105688
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _081056B8 @ =gSprites
- ldr r3, _081056BC @ =gSharedMem
- adds r1, r3, 0
- adds r1, 0x50
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r0, [r1, 0x3C]
- adds r3, 0x51
- ldrb r2, [r3]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r0, [r1, 0x3C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081056B8: .4byte gSprites
-_081056BC: .4byte gSharedMem
- thumb_func_end sub_8105688
-
- thumb_func_start sub_81056C0
-sub_81056C0: @ 81056C0
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _081056E8 @ =gSharedMem + 0x50
-_081056C6:
- adds r0, r4, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081056EC @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bls _081056C6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081056E8: .4byte gSharedMem + 0x50
-_081056EC: .4byte gSprites
- thumb_func_end sub_81056C0
-
- thumb_func_start sub_81056F0
-sub_81056F0: @ 81056F0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- ldr r0, _08105778 @ =gSpriteTemplate_83ED51C
- mov r8, r0
- movs r1, 0x48
- movs r2, 0x50
- movs r3, 0x3
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0810577C @ =gSprites
- mov r9, r1
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r2, r9
- ldrb r3, [r2, 0x5]
- movs r4, 0xD
- negs r4, r4
- adds r1, r4, 0
- ands r1, r3
- movs r6, 0x4
- orrs r1, r6
- strb r1, [r2, 0x5]
- movs r3, 0
- movs r1, 0x1
- strh r1, [r2, 0x2E]
- strh r3, [r2, 0x38]
- movs r1, 0x10
- strh r1, [r2, 0x3A]
- movs r1, 0x8
- strh r1, [r2, 0x3C]
- ldr r5, _08105780 @ =gSharedMem
- adds r1, r5, 0
- adds r1, 0x52
- strb r0, [r1]
- mov r0, r8
- movs r1, 0x68
- movs r2, 0x50
- movs r3, 0x3
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r9
- ldrb r2, [r1, 0x5]
- ands r4, r2
- orrs r4, r6
- strb r4, [r1, 0x5]
- adds r1, 0x3F
- ldrb r2, [r1]
- movs r3, 0x1
- orrs r2, r3
- strb r2, [r1]
- adds r5, 0x53
- strb r0, [r5]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08105778: .4byte gSpriteTemplate_83ED51C
-_0810577C: .4byte gSprites
-_08105780: .4byte gSharedMem
- thumb_func_end sub_81056F0
-
- thumb_func_start sub_8105784
-sub_8105784: @ 8105784
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r1, _081057E0 @ =gUnknown_083ECC58
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _081057D6
- ldrh r0, [r4, 0x3A]
- subs r0, 0x1
- strh r0, [r4, 0x3A]
- lsls r0, 16
- cmp r0, 0
- bgt _081057D6
- movs r0, 0x7
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 4
- ldr r2, _081057E4 @ =0x01030000
- adds r0, r2
- lsrs r0, 16
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- add r1, sp
- ldrb r3, [r1]
- adds r1, r3, 0
- adds r2, r3, 0
- bl MultiplyInvertedPaletteRGBComponents
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- movs r1, 0x1
- ands r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x3C]
- strh r0, [r4, 0x3A]
-_081057D6:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081057E0: .4byte gUnknown_083ECC58
-_081057E4: .4byte 0x01030000
- thumb_func_end sub_8105784
-
- thumb_func_start sub_81057E8
-sub_81057E8: @ 81057E8
- ldr r3, _081057FC @ =gSprites
- ldr r1, _08105800 @ =gSharedMem
- adds r1, 0x52
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- strh r0, [r1, 0x3C]
- bx lr
- .align 2, 0
-_081057FC: .4byte gSprites
-_08105800: .4byte gSharedMem
- thumb_func_end sub_81057E8
-
- thumb_func_start sub_8105804
-sub_8105804: @ 8105804
- push {r4,r5,lr}
- movs r0, 0x7
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 4
- ldr r1, _08105848 @ =0x01030000
- adds r0, r1
- lsrs r0, 16
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl MultiplyInvertedPaletteRGBComponents
- movs r4, 0
- ldr r5, _0810584C @ =gSharedMem + 0x52
-_08105824:
- adds r0, r4, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08105850 @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bls _08105824
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08105848: .4byte 0x01030000
-_0810584C: .4byte gSharedMem + 0x52
-_08105850: .4byte gSprites
- thumb_func_end sub_8105804
-
- thumb_func_start sub_8105854
-sub_8105854: @ 8105854
- push {lr}
- ldr r0, _08105888 @ =gSpriteTemplate_83ED534
- movs r1, 0xA8
- movs r2, 0x50
- movs r3, 0x6
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810588C @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r3, [r1, 0x5]
- movs r2, 0xD
- negs r2, r2
- ands r2, r3
- movs r3, 0x4
- orrs r2, r3
- strb r2, [r1, 0x5]
- ldr r1, _08105890 @ =gSharedMem
- adds r1, 0x41
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08105888: .4byte gSpriteTemplate_83ED534
-_0810588C: .4byte gSprites
-_08105890: .4byte gSharedMem
- thumb_func_end sub_8105854
-
- thumb_func_start sub_8105894
-sub_8105894: @ 8105894
- ldr r1, _0810589C @ =gSpriteCoordOffsetY
- ldrh r1, [r1]
- strh r1, [r0, 0x26]
- bx lr
- .align 2, 0
-_0810589C: .4byte gSpriteCoordOffsetY
- thumb_func_end sub_8105894
-
- thumb_func_start sub_81058A0
-sub_81058A0: @ 81058A0
- push {lr}
- ldr r0, _081058BC @ =gSharedMem
- adds r0, 0x41
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081058C0 @ =gSprites
- adds r0, r1
- bl DestroySprite
- pop {r0}
- bx r0
- .align 2, 0
-_081058BC: .4byte gSharedMem
-_081058C0: .4byte gSprites
- thumb_func_end sub_81058A0
-
- thumb_func_start sub_81058C4
-sub_81058C4: @ 81058C4
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r1, _08105938 @ =gUnknown_083ECC5A
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- movs r4, 0
- ldr r5, _0810593C @ =gSharedMem + 0x54
-_081058D6:
- ldr r0, _08105940 @ =gSpriteCoordOffsetX
- ldrh r0, [r0]
- movs r1, 0x50
- subs r1, r0
- lsls r1, 16
- asrs r1, 16
- ldr r0, _08105944 @ =gSpriteTemplate_83ED54C
- movs r2, 0x44
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- ldr r1, _08105948 @ =gSprites
- adds r3, r1
- ldrb r2, [r3, 0x5]
- movs r6, 0xD
- negs r6, r6
- adds r1, r6, 0
- ands r2, r1
- movs r1, 0x4
- orrs r2, r1
- strb r2, [r3, 0x5]
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- ldrb r1, [r1]
- movs r2, 0x2
- orrs r1, r2
- mov r2, r12
- strb r1, [r2]
- lsls r1, r4, 1
- add r1, sp
- ldrh r1, [r1]
- strh r1, [r3, 0x2E]
- adds r1, r4, r5
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _081058D6
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08105938: .4byte gUnknown_083ECC5A
-_0810593C: .4byte gSharedMem + 0x54
-_08105940: .4byte gSpriteCoordOffsetX
-_08105944: .4byte gSpriteTemplate_83ED54C
-_08105948: .4byte gSprites
- thumb_func_end sub_81058C4
-
- thumb_func_start sub_810594C
-sub_810594C: @ 810594C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x2E]
- subs r0, 0x2
- movs r4, 0
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- movs r1, 0x14
- bl Cos
- strh r0, [r5, 0x24]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- movs r1, 0x6
- bl Sin
- strh r0, [r5, 0x26]
- adds r1, r5, 0
- adds r1, 0x43
- strb r4, [r1]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0x7F
- ble _08105986
- movs r0, 0x2
- strb r0, [r1]
-_08105986:
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _081059B0
- adds r3, r5, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r0, r2, 31
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0
- strh r0, [r5, 0x30]
-_081059B0:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810594C
-
- thumb_func_start sub_81059B8
-sub_81059B8: @ 81059B8
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _081059E0 @ =gSharedMem + 0x54
-_081059BE:
- adds r0, r4, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081059E4 @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _081059BE
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081059E0: .4byte gSharedMem + 0x54
-_081059E4: .4byte gSprites
- thumb_func_end sub_81059B8
-
- thumb_func_start sub_81059E8
-sub_81059E8: @ 81059E8
- push {r4,lr}
- ldr r0, _08105A2C @ =gSpriteTemplate_83ED564
- movs r1, 0xA8
- movs r2, 0x3C
- movs r3, 0x8
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, _08105A30 @ =gSprites
- adds r0, r1
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldrb r1, [r0, 0x1]
- movs r2, 0x3
- orrs r1, r2
- strb r1, [r0, 0x1]
- bl InitSpriteAffineAnim
- ldr r0, _08105A34 @ =gSharedMem
- adds r0, 0x43
- strb r4, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08105A2C: .4byte gSpriteTemplate_83ED564
-_08105A30: .4byte gSprites
-_08105A34: .4byte gSharedMem
- thumb_func_end sub_81059E8
-
- thumb_func_start sub_8105A38
-sub_8105A38: @ 8105A38
- push {lr}
- adds r3, r0, 0
- ldrh r2, [r3, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _08105A5A
- adds r0, r3, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08105AB4
- adds r0, r2, 0x1
- strh r0, [r3, 0x2E]
- b _08105AB4
-_08105A5A:
- cmp r0, 0x1
- bne _08105A96
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x17
- ble _08105AB4
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- movs r0, 0
- strh r0, [r3, 0x32]
- b _08105AB4
-_08105A96:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _08105AB4
- movs r0, 0x1
- strh r0, [r3, 0x3C]
-_08105AB4:
- ldrh r0, [r3, 0x30]
- movs r1, 0xFF
- ands r1, r0
- adds r1, 0x10
- strh r1, [r3, 0x30]
- lsrs r1, 8
- ldrh r0, [r3, 0x26]
- subs r0, r1
- strh r0, [r3, 0x26]
- pop {r0}
- bx r0
- thumb_func_end sub_8105A38
-
- thumb_func_start sub_8105ACC
-sub_8105ACC: @ 8105ACC
- ldr r2, _08105AE4 @ =gSprites
- ldr r0, _08105AE8 @ =gSharedMem
- adds r0, 0x43
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- bx lr
- .align 2, 0
-_08105AE4: .4byte gSprites
-_08105AE8: .4byte gSharedMem
- thumb_func_end sub_8105ACC
-
- thumb_func_start sub_8105AEC
-sub_8105AEC: @ 8105AEC
- push {r4,lr}
- ldr r0, _08105B14 @ =gSharedMem
- adds r0, 0x43
- ldrb r0, [r0]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _08105B18 @ =gSprites
- adds r4, r0
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08105B14: .4byte gSharedMem
-_08105B18: .4byte gSprites
- thumb_func_end sub_8105AEC
-
- thumb_func_start sub_8105B1C
-sub_8105B1C: @ 8105B1C
- push {r4,lr}
- adds r3, r0, 0
- adds r2, r1, 0
- ldr r0, _08105B68 @ =gSpriteTemplate_83ED6CC
- lsls r3, 16
- asrs r3, 16
- lsls r2, 16
- asrs r2, 16
- adds r1, r3, 0
- movs r3, 0xC
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, _08105B6C @ =gSprites
- adds r0, r1
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldrb r1, [r0, 0x1]
- movs r2, 0x3
- orrs r1, r2
- strb r1, [r0, 0x1]
- bl InitSpriteAffineAnim
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08105B68: .4byte gSpriteTemplate_83ED6CC
-_08105B6C: .4byte gSprites
- thumb_func_end sub_8105B1C
-
- thumb_func_start sub_8105B70
-sub_8105B70: @ 8105B70
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08105B84
- movs r0, 0x1
- strh r0, [r2, 0x3C]
-_08105B84:
- pop {r0}
- bx r0
- thumb_func_end sub_8105B70
-
- thumb_func_start sub_8105B88
-sub_8105B88: @ 8105B88
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _08105BB0 @ =gSprites
- adds r4, r0
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08105BB0: .4byte gSprites
- thumb_func_end sub_8105B88
-
- thumb_func_start sub_8105BB4
-sub_8105BB4: @ 8105BB4
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r3, _08105BF0 @ =gUnknown_083ECF0C
- lsrs r1, 22
- adds r3, r1, r3
- ldr r5, [r3]
- ldr r3, _08105BF4 @ =gUnknown_083ECE7E
- adds r4, r1, r3
- movs r6, 0
- ldrsh r4, [r4, r6]
- adds r3, 0x2
- adds r1, r3
- movs r6, 0
- ldrsh r3, [r1, r6]
- lsls r2, 16
- asrs r2, 16
- str r2, [sp]
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_8105BF8
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08105BF0: .4byte gUnknown_083ECF0C
-_08105BF4: .4byte gUnknown_083ECE7E
- thumb_func_end sub_8105BB4
-
- thumb_func_start sub_8105BF8
-sub_8105BF8: @ 8105BF8
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r6, r1, 0
- adds r1, r2, 0
- adds r2, r3, 0
- ldr r5, [sp, 0x14]
- lsls r4, 24
- lsls r5, 16
- lsrs r5, 16
- ldr r0, _08105C58 @ =gUnknown_083EDB5C
- lsrs r4, 22
- adds r0, r4, r0
- ldr r0, [r0]
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x10
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- adds r7, r0, 0
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- ldr r1, _08105C5C @ =gSprites
- adds r2, r0, r1
- ldrb r0, [r2, 0x5]
- movs r1, 0xC
- orrs r0, r1
- strb r0, [r2, 0x5]
- str r6, [r2, 0x1C]
- strh r5, [r2, 0x3A]
- movs r0, 0x1
- strh r0, [r2, 0x3C]
- ldr r0, _08105C60 @ =gUnknown_083EDBC4
- adds r4, r0
- ldr r1, [r4]
- cmp r1, 0
- beq _08105C50
- adds r0, r2, 0
- bl SetSubspriteTables
-_08105C50:
- adds r0, r7, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08105C58: .4byte gUnknown_083EDB5C
-_08105C5C: .4byte gSprites
-_08105C60: .4byte gUnknown_083EDBC4
- thumb_func_end sub_8105BF8
-
- thumb_func_start sub_8105C64
-sub_8105C64: @ 8105C64
- movs r1, 0
- strh r1, [r0, 0x3C]
- bx lr
- thumb_func_end sub_8105C64
-
- thumb_func_start sub_8105C6C
-sub_8105C6C: @ 8105C6C
- push {r4,r5,lr}
- sub sp, 0x10
- adds r4, r0, 0
- ldr r1, _08105CE8 @ =gUnknown_083ECC62
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- add r5, sp, 0x8
- ldr r1, _08105CEC @ =gUnknown_083ECC6A
- adds r0, r5, 0
- movs r2, 0x8
- bl memcpy
- ldrh r0, [r4, 0x30]
- adds r1, r0, 0x1
- strh r1, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _08105CB2
- adds r3, r4, 0
- adds r3, 0x42
- ldrb r2, [r3]
- lsls r0, r2, 26
- lsrs r0, 26
- movs r1, 0x1
- eors r1, r0
- movs r0, 0x40
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0
- strh r0, [r4, 0x30]
-_08105CB2:
- movs r0, 0
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- adds r0, 0x42
- ldrb r1, [r0]
- movs r0, 0x3F
- ands r0, r1
- cmp r0, 0
- beq _08105CDE
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0x24]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- lsls r0, 1
- adds r0, r5, r0
- ldrh r0, [r0]
- strh r0, [r4, 0x26]
-_08105CDE:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08105CE8: .4byte gUnknown_083ECC62
-_08105CEC: .4byte gUnknown_083ECC6A
- thumb_func_end sub_8105C6C
-
- thumb_func_start sub_8105CF0
-sub_8105CF0: @ 8105CF0
- push {lr}
- adds r3, r0, 0
- adds r3, 0x3F
- ldrb r1, [r3]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r3]
- bl sub_8105C6C
- pop {r0}
- bx r0
- thumb_func_end sub_8105CF0
-
- thumb_func_start sub_8105D08
-sub_8105D08: @ 8105D08
- push {lr}
- adds r3, r0, 0
- adds r3, 0x3F
- ldrb r1, [r3]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- bl sub_8105C6C
- pop {r0}
- bx r0
- thumb_func_end sub_8105D08
-
- thumb_func_start sub_8105D20
-sub_8105D20: @ 8105D20
- push {lr}
- adds r3, r0, 0
- adds r3, 0x3F
- ldrb r1, [r3]
- movs r2, 0x1
- orrs r1, r2
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- bl sub_8105C6C
- pop {r0}
- bx r0
- thumb_func_end sub_8105D20
-
- thumb_func_start sub_8105D3C
-sub_8105D3C: @ 8105D3C
- push {lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- beq _08105D70
- cmp r0, 0x1
- bgt _08105D52
- cmp r0, 0
- beq _08105D5C
- b _08105DA0
-_08105D52:
- cmp r0, 0x2
- beq _08105D80
- cmp r0, 0x3
- beq _08105D9C
- b _08105DA0
-_08105D5C:
- ldrh r0, [r2, 0x20]
- adds r0, 0x4
- strh r0, [r2, 0x20]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xCF
- ble _08105DA0
- movs r0, 0xD0
- strh r0, [r2, 0x20]
- b _08105D8E
-_08105D70:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5A
- ble _08105DA0
- b _08105D8E
-_08105D80:
- ldrh r0, [r2, 0x20]
- adds r0, 0x4
- strh r0, [r2, 0x20]
- lsls r0, 16
- ldr r1, _08105D98 @ =0x010f0000
- cmp r0, r1
- ble _08105DA0
-_08105D8E:
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- b _08105DA0
- .align 2, 0
-_08105D98: .4byte 0x010f0000
-_08105D9C:
- movs r0, 0
- strh r0, [r2, 0x3C]
-_08105DA0:
- pop {r0}
- bx r0
- thumb_func_end sub_8105D3C
-
- thumb_func_start sub_8105DA4
-sub_8105DA4: @ 8105DA4
- push {lr}
- adds r1, r0, 0
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- beq _08105DD8
- cmp r0, 0x1
- bgt _08105DBA
- cmp r0, 0
- beq _08105DC4
- b _08105E02
-_08105DBA:
- cmp r0, 0x2
- beq _08105DE8
- cmp r0, 0x3
- beq _08105DFE
- b _08105E02
-_08105DC4:
- ldrh r0, [r1, 0x20]
- subs r0, 0x4
- strh r0, [r1, 0x20]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD0
- bgt _08105E02
- movs r0, 0xD0
- strh r0, [r1, 0x20]
- b _08105DF6
-_08105DD8:
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5A
- ble _08105E02
- b _08105DF6
-_08105DE8:
- ldrh r0, [r1, 0x20]
- subs r0, 0x4
- strh r0, [r1, 0x20]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x90
- bgt _08105E02
-_08105DF6:
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- b _08105E02
-_08105DFE:
- movs r0, 0
- strh r0, [r1, 0x3C]
-_08105E02:
- pop {r0}
- bx r0
- thumb_func_end sub_8105DA4
-
- thumb_func_start sub_8105E08
-sub_8105E08: @ 8105E08
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bhi _08105EAE
- lsls r0, 2
- ldr r1, _08105E20 @ =_08105E24
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08105E20: .4byte _08105E24
- .align 2, 0
-_08105E24:
- .4byte _08105E3C
- .4byte _08105E52
- .4byte _08105E70
- .4byte _08105E84
- .4byte _08105E94
- .4byte _08105EAA
-_08105E3C:
- ldr r0, _08105E6C @ =gSharedMem
- ldrb r1, [r0, 0xA]
- subs r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
-_08105E52:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _08105EAE
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0
- strh r0, [r4, 0x30]
- b _08105EAE
- .align 2, 0
-_08105E6C: .4byte gSharedMem
-_08105E70:
- ldrh r0, [r4, 0x20]
- adds r0, 0x4
- strh r0, [r4, 0x20]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xCF
- ble _08105EAE
- movs r0, 0xD0
- strh r0, [r4, 0x20]
- b _08105EA2
-_08105E84:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5A
- ble _08105EAE
- b _08105EA2
-_08105E94:
- ldrh r0, [r4, 0x20]
- adds r0, 0x4
- strh r0, [r4, 0x20]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF7
- ble _08105EAE
-_08105EA2:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _08105EAE
-_08105EAA:
- movs r0, 0
- strh r0, [r4, 0x3C]
-_08105EAE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8105E08
-
- thumb_func_start sub_8105EB4
-sub_8105EB4: @ 8105EB4
- push {lr}
- adds r3, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- beq _08105EE2
- cmp r0, 0x1
- bgt _08105ECA
- cmp r0, 0
- beq _08105ED0
- b _08105F50
-_08105ECA:
- cmp r0, 0x2
- beq _08105F00
- b _08105F50
-_08105ED0:
- adds r2, r3, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
-_08105EE2:
- ldrh r0, [r3, 0x22]
- adds r0, 0x8
- strh r0, [r3, 0x22]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6F
- ble _08105F50
- movs r0, 0x70
- strh r0, [r3, 0x22]
- movs r0, 0x10
- strh r0, [r3, 0x30]
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- b _08105F50
-_08105F00:
- movs r0, 0x32
- ldrsh r2, [r3, r0]
- cmp r2, 0
- bne _08105F46
- ldrh r0, [r3, 0x22]
- ldrh r1, [r3, 0x30]
- subs r0, r1
- strh r0, [r3, 0x22]
- negs r1, r1
- strh r1, [r3, 0x30]
- ldrh r0, [r3, 0x34]
- adds r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08105F46
- lsls r0, r1, 16
- asrs r0, 18
- strh r0, [r3, 0x30]
- strh r2, [r3, 0x34]
- adds r1, r0, 0
- cmp r1, 0
- bne _08105F46
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- strh r1, [r3, 0x3C]
- adds r2, r3, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_08105F46:
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- movs r1, 0x7
- ands r0, r1
- strh r0, [r3, 0x32]
-_08105F50:
- pop {r0}
- bx r0
- thumb_func_end sub_8105EB4
-
- thumb_func_start sub_8105F54
-sub_8105F54: @ 8105F54
- push {lr}
- adds r1, r0, 0
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _08105F66
- cmp r0, 0x1
- beq _08105F7C
- b _08105F98
-_08105F66:
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _08105F98
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- b _08105F98
-_08105F7C:
- ldrh r0, [r1, 0x22]
- adds r0, 0x2
- strh r0, [r1, 0x22]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2F
- ble _08105F98
- movs r0, 0x30
- strh r0, [r1, 0x22]
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- movs r0, 0
- strh r0, [r1, 0x3C]
-_08105F98:
- pop {r0}
- bx r0
- thumb_func_end sub_8105F54
-
- thumb_func_start sub_8105F9C
-sub_8105F9C: @ 8105F9C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08105FAE
- cmp r0, 0x1
- beq _08106000
- b _0810604E
-_08105FAE:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x20
- ble _0810604E
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0x5
- strh r0, [r4, 0x30]
- ldrb r0, [r4, 0x1]
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r2, _08105FFC @ =REG_MOSAIC
- ldrh r1, [r4, 0x30]
- lsls r0, r1, 4
- orrs r0, r1
- lsls r0, 8
- strh r0, [r2]
- b _0810604E
- .align 2, 0
-_08105FFC: .4byte REG_MOSAIC
-_08106000:
- ldrh r1, [r4, 0x32]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r4, 0x30]
- subs r0, r1
- strh r0, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- bge _08106016
- movs r0, 0
- strh r0, [r4, 0x30]
-_08106016:
- ldr r2, _08106054 @ =REG_MOSAIC
- ldrh r1, [r4, 0x30]
- lsls r0, r1, 4
- orrs r0, r1
- lsls r0, 8
- strh r0, [r2]
- ldrh r1, [r4, 0x32]
- movs r0, 0xFF
- ands r0, r1
- adds r0, 0x80
- strh r0, [r4, 0x32]
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- cmp r1, 0
- bne _0810604E
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x3C]
- ldrb r1, [r4, 0x1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x1]
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
-_0810604E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08106054: .4byte REG_MOSAIC
- thumb_func_end sub_8105F9C
-
- thumb_func_start sub_8106058
-sub_8106058: @ 8106058
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- cmp r0, 0x2
- bgt _081060A8
- ldr r1, _081060A4 @ =gUnknown_083EDE10
- lsls r0, 2
- adds r0, r1
- ldr r4, [r0]
- movs r0, 0x6
- bl IndexOfSpritePaletteTag
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 4
- movs r0, 0x80
- lsls r0, 17
- adds r1, r0
- lsrs r1, 16
- adds r0, r4, 0
- movs r2, 0x20
- bl LoadPalette
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _081060E4
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- movs r0, 0
- strh r0, [r5, 0x32]
- b _081060E4
- .align 2, 0
-_081060A4: .4byte gUnknown_083EDE10
-_081060A8:
- ldr r1, _081060F8 @ =gUnknown_083EDE10
- movs r2, 0x30
- ldrsh r0, [r5, r2]
- lsls r0, 2
- adds r0, r1
- ldr r4, [r0]
- movs r0, 0x6
- bl IndexOfSpritePaletteTag
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 4
- movs r0, 0x80
- lsls r0, 17
- adds r1, r0
- lsrs r1, 16
- adds r0, r4, 0
- movs r2, 0x20
- bl LoadPalette
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r5, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x18
- ble _081060E4
- strh r1, [r5, 0x30]
- strh r1, [r5, 0x32]
-_081060E4:
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnimIfDifferent
- movs r0, 0
- strh r0, [r5, 0x3C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081060F8: .4byte gUnknown_083EDE10
- thumb_func_end sub_8106058
-
- thumb_func_start sub_81060FC
-sub_81060FC: @ 81060FC
- push {r4-r6,lr}
- sub sp, 0x30
- adds r4, r0, 0
- ldr r1, _08106138 @ =gUnknown_083ECC72
- mov r0, sp
- movs r2, 0x10
- bl memcpy
- add r6, sp, 0x10
- ldr r1, _0810613C @ =gUnknown_083ECC82
- adds r0, r6, 0
- movs r2, 0x10
- bl memcpy
- add r5, sp, 0x20
- ldr r1, _08106140 @ =gUnknown_083ECC92
- adds r0, r5, 0
- movs r2, 0x10
- bl memcpy
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08106174
- cmp r0, 0x1
- bgt _08106144
- cmp r0, 0
- beq _0810614A
- b _081061C0
- .align 2, 0
-_08106138: .4byte gUnknown_083ECC72
-_0810613C: .4byte gUnknown_083ECC82
-_08106140: .4byte gUnknown_083ECC92
-_08106144:
- cmp r0, 0x2
- beq _08106188
- b _081061C0
-_0810614A:
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0x24]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- lsls r0, 1
- adds r0, r6, r0
- ldrh r0, [r0]
- strh r0, [r4, 0x26]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r5, r0
- ldrh r0, [r0]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
-_08106174:
- ldrh r0, [r4, 0x30]
- subs r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _081061C0
- b _081061BA
-_08106188:
- ldrh r0, [r4, 0x24]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- cmp r1, 0
- ble _08106196
- subs r0, 0x4
- b _0810619C
-_08106196:
- cmp r1, 0
- bge _0810619E
- adds r0, 0x4
-_0810619C:
- strh r0, [r4, 0x24]
-_0810619E:
- ldrh r0, [r4, 0x26]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- cmp r1, 0
- ble _081061AC
- subs r0, 0x4
- b _081061B2
-_081061AC:
- cmp r1, 0
- bge _081061B4
- adds r0, 0x4
-_081061B2:
- strh r0, [r4, 0x26]
-_081061B4:
- ldr r0, [r4, 0x24]
- cmp r0, 0
- bne _081061C0
-_081061BA:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
-_081061C0:
- add sp, 0x30
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81060FC
-
- thumb_func_start sub_81061C8
-sub_81061C8: @ 81061C8
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- ldr r1, _0810622C @ =gUnknown_083ECCA2
- mov r0, sp
- movs r2, 0x10
- bl memcpy
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _081061EA
- adds r0, r1, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0xC
- strh r0, [r4, 0x30]
-_081061EA:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- lsls r0, 1
- add r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- lsls r0, 1
- add r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08106224
- subs r0, r1, 0x1
- strh r0, [r4, 0x30]
-_08106224:
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810622C: .4byte gUnknown_083ECCA2
- thumb_func_end sub_81061C8
-
- thumb_func_start sub_8106230
-sub_8106230: @ 8106230
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _0810627A
- cmp r0, 0x1
- bgt _08106248
- cmp r0, 0
- beq _08106252
- b _0810634A
-_08106248:
- cmp r0, 0x2
- beq _081062C4
- cmp r0, 0x3
- beq _081062FC
- b _0810634A
-_08106252:
- ldr r2, _081062BC @ =gSharedMem
- adds r1, r2, 0
- adds r1, 0x5C
- movs r0, 0x2F
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x3F
- strh r0, [r1]
- subs r1, 0x4
- ldr r0, _081062C0 @ =0x00002088
- strh r0, [r1]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
-_0810627A:
- ldrh r0, [r5, 0x30]
- adds r2, r0, 0x2
- strh r2, [r5, 0x30]
- adds r0, 0xB2
- strh r0, [r5, 0x32]
- movs r1, 0xF0
- subs r1, r2
- strh r1, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD0
- ble _08106296
- movs r0, 0xD0
- strh r0, [r5, 0x32]
-_08106296:
- movs r1, 0x34
- ldrsh r0, [r5, r1]
- cmp r0, 0xCF
- bgt _081062A2
- movs r0, 0xD0
- strh r0, [r5, 0x34]
-_081062A2:
- ldr r2, _081062BC @ =gSharedMem
- ldrh r0, [r5, 0x32]
- lsls r0, 8
- ldrh r1, [r5, 0x34]
- orrs r0, r1
- adds r1, r2, 0
- adds r1, 0x58
- strh r0, [r1]
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- cmp r0, 0x33
- ble _0810634A
- b _0810633C
- .align 2, 0
-_081062BC: .4byte gSharedMem
-_081062C0: .4byte 0x00002088
-_081062C4:
- ldr r6, _08106354 @ =gSharedMem
- movs r1, 0x12
- ldrsh r0, [r6, r1]
- cmp r0, 0
- beq _0810634A
- ldr r1, _08106358 @ =SpriteCallbackDummy
- movs r4, 0
- str r4, [sp]
- movs r0, 0x5
- movs r2, 0xD0
- movs r3, 0x74
- bl sub_8104D30
- adds r1, r6, 0
- adds r1, 0x58
- ldr r0, _0810635C @ =0x0000c0e0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0xD1
- lsls r0, 7
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x2F
- strh r0, [r1]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- strh r4, [r5, 0x30]
-_081062FC:
- ldrh r0, [r5, 0x30]
- adds r2, r0, 0x2
- strh r2, [r5, 0x30]
- adds r0, 0xC2
- strh r0, [r5, 0x32]
- movs r1, 0xE0
- subs r1, r2
- strh r1, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD0
- ble _08106318
- movs r0, 0xD0
- strh r0, [r5, 0x32]
-_08106318:
- movs r1, 0x34
- ldrsh r0, [r5, r1]
- cmp r0, 0xCF
- bgt _08106324
- movs r0, 0xD0
- strh r0, [r5, 0x34]
-_08106324:
- ldr r2, _08106354 @ =gSharedMem
- ldrh r0, [r5, 0x32]
- lsls r0, 8
- ldrh r1, [r5, 0x34]
- orrs r0, r1
- adds r1, r2, 0
- adds r1, 0x58
- strh r0, [r1]
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- cmp r0, 0xF
- ble _0810634A
-_0810633C:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- adds r1, r2, 0
- adds r1, 0x5C
- movs r0, 0x3F
- strh r0, [r1]
-_0810634A:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08106354: .4byte gSharedMem
-_08106358: .4byte SpriteCallbackDummy
-_0810635C: .4byte 0x0000c0e0
- thumb_func_end sub_8106230
-
- thumb_func_start nullsub_70
-nullsub_70: @ 8106360
- bx lr
- thumb_func_end nullsub_70
-
- thumb_func_start sub_8106364
-sub_8106364: @ 8106364
- ldr r1, _0810636C @ =REG_MOSAIC
- movs r0, 0
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0810636C: .4byte REG_MOSAIC
- thumb_func_end sub_8106364
-
- thumb_func_start sub_8106370
-sub_8106370: @ 8106370
- push {r4,lr}
- ldr r0, _08106398 @ =gUnknown_083EDE20
- ldr r4, [r0]
- movs r0, 0x6
- bl IndexOfSpritePaletteTag
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 4
- movs r0, 0x80
- lsls r0, 17
- adds r1, r0
- lsrs r1, 16
- adds r0, r4, 0
- movs r2, 0x20
- bl LoadPalette
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08106398: .4byte gUnknown_083EDE20
- thumb_func_end sub_8106370
-
- thumb_func_start sub_810639C
-sub_810639C: @ 810639C
- ldr r2, _081063BC @ =gSharedMem
- adds r1, r2, 0
- adds r1, 0x58
- movs r0, 0xF0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0xA0
- strh r0, [r1]
- adds r0, r2, 0
- adds r0, 0x5C
- movs r1, 0x3F
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_081063BC: .4byte gSharedMem
- thumb_func_end sub_810639C
-
- thumb_func_start sub_81063C0
-sub_81063C0: @ 81063C0
- push {r4,lr}
- bl sub_8106404
- ldr r0, _081063F0 @ =gSlotMachineReelTimeLights_Gfx
- ldr r4, _081063F4 @ =gSharedMem + 0x10000
- adds r1, r4, 0
- bl LZDecompressWram
- ldr r0, _081063F8 @ =gUnknown_083EDE8C
- movs r1, 0xC8
- lsls r1, 6
- adds r4, r1
- adds r1, r4, 0
- bl LZDecompressWram
- ldr r0, _081063FC @ =gUnknown_083EDC2C
- bl LoadSpriteSheets
- ldr r0, _08106400 @ =gSlotMachineSpritePalettes
- bl LoadSpritePalettes
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081063F0: .4byte gSlotMachineReelTimeLights_Gfx
-_081063F4: .4byte gSharedMem + 0x10000
-_081063F8: .4byte gUnknown_083EDE8C
-_081063FC: .4byte gUnknown_083EDC2C
-_08106400: .4byte gSlotMachineSpritePalettes
- thumb_func_end sub_81063C0
-
- thumb_func_start sub_8106404
-sub_8106404: @ 8106404
- push {r4,r5,lr}
- ldr r3, _0810643C @ =gSharedMem + 0x10000
- movs r2, 0
- ldr r5, _08106440 @ =gUnknown_083EDCDC
- ldr r0, _08106444 @ =gUnknown_083EDCE4
- ldr r4, [r0]
-_08106410:
- movs r1, 0
- adds r2, 0x1
-_08106414:
- adds r0, r4, r1
- ldrb r0, [r0]
- strb r0, [r3]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- adds r3, 0x1
- cmp r1, 0x1F
- bls _08106414
- lsls r0, r2, 24
- lsrs r2, r0, 24
- cmp r2, 0x3F
- bls _08106410
- adds r0, r5, 0
- bl LoadSpriteSheet
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810643C: .4byte gSharedMem + 0x10000
-_08106440: .4byte gUnknown_083EDCDC
-_08106444: .4byte gUnknown_083EDCE4
- thumb_func_end sub_8106404
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/battle_anim_80CA710.s b/data/battle_anim_80CA710.s
index ba5d9f533..4430cd372 100644
--- a/data/battle_anim_80CA710.s
+++ b/data/battle_anim_80CA710.s
@@ -2505,7 +2505,7 @@ gSpriteTemplate_83D96C4:: @ 83D96C4
spr_template 10201, 10201, gOamData_837DF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80D58FC
.align 1
-gUnknown_083D96DC:: @ 83D96DC
+gHeatedRockCoords:: @ 83D96DC
.2byte -2, -5
.2byte -1, -1
.2byte 3, -6
diff --git a/data/slot_machine.s b/data/slot_machine.s
deleted file mode 100644
index 9bd6fe5c9..000000000
--- a/data/slot_machine.s
+++ /dev/null
@@ -1,1530 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_083ECAAC:: @ 83ECAAC
- .4byte sub_8101D5C
- .4byte sub_8101D8C
- .4byte sub_8101DB0
- .4byte sub_8101DF4
- .4byte sub_8101E10
- .4byte sub_8101E3C
- .4byte sub_8101F44
- .4byte sub_8101F60
- .4byte sub_8101F88
- .4byte sub_8101FA4
- .4byte sub_8102008
- .4byte sub_8102034
- .4byte sub_8102058
- .4byte sub_8102090
- .4byte sub_81020C8
- .4byte sub_81021E0
- .4byte sub_81021FC
- .4byte sub_8102264
- .4byte sub_81022A0
- .4byte sub_81022CC
- .4byte sub_81022F0
- .4byte sub_8102318
- .4byte sub_8102344
- .4byte sub_810239C
- .4byte sub_81023B8
- .4byte sub_81023E0
- .4byte sub_81023FC
- .4byte sub_8102424
- .4byte sub_8102460
-
- .align 2
-gUnknown_083ECB20:: @ 83ECB20
- .4byte sub_8102A9C
- .4byte sub_8102AD0
- .4byte sub_8102B80
-
- .align 2
-gUnknown_083ECB2C:: @ 83ECB2C
- .4byte sub_8102EA0
- .4byte sub_8102EA4
- .4byte sub_8102EC0
- .4byte sub_8102F4C
- .4byte sub_8103008
-
- .align 2
-gUnknown_083ECB40:: @ 83ECB40
- .4byte sub_810305C
- .4byte sub_81032C0
- .4byte sub_81033DC
-
- .align 2
-gUnknown_083ECB4C:: @ 83ECB4C
- .4byte sub_81034F4
- .4byte sub_8103540
- .4byte sub_810380C
-
- .align 1
-gUnknown_083ECB58:: @ 83ECB58
- .2byte 2, 4, 4, 4, 8
-
- .align 2
-gUnknown_083ECB64:: @ 83ECB64
- .4byte sub_8103154
- .4byte sub_81031B4
- .4byte sub_81031B4
-
- .align 2
-gUnknown_083ECB70:: @ 83ECB70
- .4byte sub_81032E8
- .4byte sub_81032E8
- .4byte sub_810333C
-
- .align 2
-gUnknown_083ECB7C:: @ 83ECB7C
- .4byte sub_810341C
- .4byte sub_810341C
- .4byte sub_810347C
-
- .align 2
-gUnknown_083ECB88:: @ 83ECB88
- .4byte sub_8103564
- .4byte j5_08111E84
- .4byte sub_8103668
-
- .align 2
-gUnknown_083ECB94:: @ 83ECB94
- .4byte sub_8103830
- .4byte sub_8103910
- .4byte sub_8103A78
-
- .align 2
-gUnknown_083ECBA0:: @ 83ECBA0
- .4byte sub_8103C78
- .4byte sub_8103CAC
- .4byte sub_8103CC8
-
- .align 1
-gUnknown_083ECBAC:: @ 83ECBAC
- .2byte 5, 10, 15
-
- .align 2
-gUnknown_083ECBB4:: @ 83ECBB4
- .4byte nullsub_68
- .4byte sub_810411C
- .4byte sub_8104144
- .4byte sub_81041AC
-
- .align 1
-gUnknown_083ECBC4:: @ 83ECBC4
- .2byte 0x9E, 0x6E, 0x9F, 0x6F, 0xAF, 0x7F
-
- .align 2
-gUnknown_083ECBD0:: @ 83ECBD0
- .4byte sub_810437C
- .4byte sub_81043EC
- .4byte sub_8104468
- .4byte sub_8104498
- .4byte sub_8104548
- .4byte sub_8104598
- .4byte sub_81045CC
- .4byte sub_810463C
- .4byte sub_81046C0
- .4byte sub_8104764
- .4byte sub_8104794
- .4byte sub_81047EC
- .4byte sub_8104860
- .4byte sub_81048A8
- .4byte sub_81048CC
- .4byte sub_8104940
- .4byte sub_81049C8
- .4byte sub_8104794
- .4byte sub_81049F8
-
-gUnknown_083ECC1C:: @ 83ECC1C
- .byte 1, 1, 2, 2
-
- .align 1
-gUnknown_083ECC20:: @ 83ECC20
- .2byte 0x40, 0x30, 0x18, 0x8
-
- .align 1
-gUnknown_083ECC28:: @ 83ECC28
- .2byte 10, 8, 6, 4
-
- .align 2
-gUnknown_083ECC30:: @ 83ECC30
- .4byte sub_8104B3C
- .4byte sub_8104B60
- .4byte sub_8104B80
- .4byte sub_8104B60
- .4byte sub_8104BC8
- .4byte sub_8104B60
- .4byte sub_8104BFC
- .4byte sub_8104B60
- .4byte sub_8104C44
-
-gUnknown_083ECC54:: @ 83ECC54
- .4byte nullsub_69
-
-gUnknown_083ECC58:: @ 83ECC58
- .byte 16, 0
-
- .align 1
-gUnknown_083ECC5A:: @ 83ECC5A
- .2byte 0x0, 0x40, 0x80, 0xC0
-
- .align 1
-gUnknown_083ECC62:: @ 83ECC62
- .2byte 4, -4, 4, -4
-
- .align 1
-gUnknown_083ECC6A:: @ 83ECC6A
- .2byte 4, 4, -4, -4
-
- .align 1
-gUnknown_083ECC72:: @ 83ECC72
- .2byte 0, -40, 0, 0, 48, 0, 24, 0
-
- .align 1
-gUnknown_083ECC82:: @ 83ECC82
- .2byte -32, 0, -32, -48, 0, -48, 0, -48
-
- .align 1
-gUnknown_083ECC92:: @ 83ECC92
- .2byte 16, 12, 16, 0, 0, 4, 8, 8
-
- .align 1
-gUnknown_083ECCA2:: @ 83ECCA2
- .2byte 160, 192, 224, 104, 80, 64, 48, 24
-
-gUnknown_083ECCB2:: @ 83ECCB2
- .byte 0, 4, 2, 6, 5, 3, 1, 3, 4, 5, 6, 2, 0, 5, 3, 6, 2, 1, 5, 3, 6
- .byte 0, 4, 6, 3, 2, 4, 6, 5, 5, 3, 1, 3, 6, 4, 2, 3, 6, 4, 3, 6, 4
- .byte 0, 5, 1, 6, 3, 2, 6, 3, 5, 2, 6, 3, 2, 5, 6, 3, 2, 5, 6, 3, 4
-
-gUnknown_083ECCF1:: @ 83ECCF1
- .byte 1, 0, 5, 4, 3, 2, 0
-
- .align 1
-gUnknown_083ECCF8:: @ 83ECCF8
- .2byte 0, 6, 0, 10, 0, 2
-
-gUnknown_083ECD04:: @ 83ECD04
- .byte 1, 1, 12
- .byte 1, 1, 14
- .byte 2, 2, 14
- .byte 2, 2, 14
- .byte 2, 3, 16
- .byte 3, 3, 16
-
-gUnknown_083ECD16:: @ 83ECD16
- .byte 25, 25, 30, 40, 40, 50
- .byte 25, 25, 30, 30, 35, 35
- .byte 25, 25, 30, 25, 25, 30
-
-gUnknown_083ECD28:: @ 83ECD28
- .byte 20, 25, 25, 20, 25, 25
- .byte 12, 15, 15, 18, 19, 22
- .byte 25, 25, 25, 30, 30, 40
- .byte 25, 25, 20, 20, 15, 15
- .byte 40, 40, 35, 35, 40, 40
-
-gUnknown_083ECD46:: @ 83ECD46
- .byte -13, -13, -13, 80, 80, 80, 80, 40, 40, 40, 40, 40, 40, 5, 5, 5, 5
- .byte 5, 5, 5,-106,-106,-106,-106,-126,-126,-126,-126,-126,-126, 100, 100, 100, 5
- .byte 4, 4, 4, 20, 20, 20, 20, 80, 80, 80, 80, 80, 80, 100, 100, 100, 40
- .byte 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 45, 45, 45, 100
- .byte 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 100
- .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6
-
-gUnknown_083ECDAC:: @ 83ECDAC
- .byte -13, -13, -13, -56, -56, -56, -56, -96, -96, -96, -96, -96, -96, 70, 70, 70, 5
- .byte 5, 5, 5, 25, 25, 25, 25, 5, 5, 5, 5, 5, 5, 2, 2, 2, 6
- .byte 4, 4, 4, 25, 25, 25, 25, 30, 30, 30, 30, 30, 30, 40, 40, 40, 35
- .byte 2, 2, 2, 3, 3, 3, 3, 30, 30, 30, 30, 30, 30, 100, 100, 100, 50
- .byte 1, 1, 1, 2, 2, 2, 2, 30, 30, 30, 30, 30, 30, 40, 40, 40, 100
- .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 60
-
- .align 1
-gUnknown_083ECE12:: @ 83ECE12
- .2byte 128, 175, 200, 225, 256
-
-gUnknown_083ECE1C:: @ 83ECE1C
- .byte 10, 0, 5, 0, 10, 0, 10, 0, 10, 0, 15, 0, 10, 0, 25, 0, 10, 0, 35, 0
-
-gUnknown_083ECE30:: @ 83ECE30
- .byte 0, 0, 5, 0, 10, 0, 15, 0, 20, 0
-
-gUnknown_083ECE3A:: @ 83ECE3A
- .byte 6, 4, 3, 2, 5, 0, 0, 0
-
-gUnknown_083ECE42:: @ 83ECE42
- .byte 0x80, 0
- .byte 0x20, 0
- .byte 0x40, 0
-
-gUnknown_083ECE48:: @ 83ECE48
- .byte 0x10, 0
- .byte 0x08, 0
- .byte 0x04, 0
- .byte 0x02, 0
- .byte 0x01, 0
-
-gUnknown_083ECE52:: @ 83ECE52
- .byte 7, 8, 4, 3, 0, 5, 2, 0
-
- .align 1
-gUnknown_083ECE5A:: @ 83ECE5A
- .2byte 1, 2, 4, 8, 16, 32, 64, 128, 256
-
- .align 1
-gUnknown_083ECE6C:: @ 83ECE6C
- .2byte 2, 4, 0, 6, 12, 3, 90, 300, 300
-
- .align 1
-gUnknown_083ECE7E:: @ 83ECE7E
- .2byte 208, 56
- .2byte 184, 0
- .2byte 200, 8
- .2byte 216, 16
- .2byte 232, 24
- .2byte 208, 72
- .2byte 208, 8
- .2byte 208, 64
- .2byte 208, 56
- .2byte 192, 88
- .2byte 224, 88
- .2byte 192, 120
- .2byte 224, 120
- .2byte 144, 56
- .2byte 272, 88
- .2byte 168, 112
- .2byte 208, 84
- .2byte 208, 112
- .2byte 188, 52
- .2byte 208, 52
- .2byte 228, 52
- .2byte 184, 72
- .2byte 196, 72
- .2byte 208, 72
- .2byte 220, 72
- .2byte 232, 72
- .2byte 188, 52
- .2byte 208, 52
- .2byte 228, 52
- .2byte 184, 72
- .2byte 196, 72
- .2byte 208, 72
- .2byte 220, 72
- .2byte 232, 72
- .2byte 0, 0
-
- .align 2
-gUnknown_083ECF0C:: @ 83ECF0C
- .4byte sub_8105C64
- .4byte sub_8105F54
- .4byte sub_8105F54
- .4byte sub_8105F54
- .4byte sub_8105F54
- .4byte sub_8105F9C
- .4byte sub_8105EB4
- .4byte sub_8105C64
- .4byte sub_8105C64
- .4byte sub_8105C6C
- .4byte sub_8105CF0
- .4byte sub_8105D08
- .4byte sub_8105D20
- .4byte sub_8105D3C
- .4byte sub_8105DA4
- .4byte sub_8105E08
- .4byte sub_8105C64
- .4byte sub_8106058
- .4byte sub_81060FC
- .4byte sub_81060FC
- .4byte sub_81060FC
- .4byte sub_81060FC
- .4byte sub_81060FC
- .4byte sub_81060FC
- .4byte sub_81060FC
- .4byte sub_81060FC
- .4byte sub_81061C8
- .4byte sub_81061C8
- .4byte sub_81061C8
- .4byte sub_81061C8
- .4byte sub_81061C8
- .4byte sub_81061C8
- .4byte sub_81061C8
- .4byte sub_81061C8
- .4byte sub_8106230
-
- .align 2
-Unknown_83ECF98:
- .byte 25, 34
- .2byte 0
- .byte 2, 0
- .2byte 0
- .byte 9, 16
- .2byte 0
- .byte 255, 0
- .2byte 0
-
- .align 2
-Unknown_83ECFA8:
- .byte 10, 1
- .2byte 0
- .byte 11, 2
- .2byte 0
- .byte 12, 3
- .2byte 0
- .byte 13, 4
- .2byte 0
- .byte 5, 5
- .2byte 0
- .byte 8, 6
- .2byte 0
- .byte 255, 0
- .2byte 0
-
- .align 2
-Unknown_83ECFC4:
- .byte 3, 7
- .2byte 0
- .byte 8, 17
- .2byte 0
- .byte 255, 0
- .2byte 0
-
- .align 2
-Unknown_83ECFD0:
- .byte 4, 8
- .2byte 0
- .byte 6, 9
- .2byte 0
- .byte 6, 10
- .2byte 1
- .byte 6, 11
- .2byte 2
- .byte 6, 12
- .2byte 3
- .byte 255, 0
- .2byte 0
-
- .align 2
-Unknown_83ECFE8:
- .byte 0, 13
- .2byte 0
- .byte 1, 14
- .2byte 0
- .byte 7, 15
- .2byte 0
- .byte 255, 0
- .2byte 0
-
- .align 2
-Unknown_83ECFF8:
- .byte 19, 26
- .2byte 0
- .byte 20, 27
- .2byte 1
- .byte 21, 28
- .2byte 2
- .byte 14, 29
- .2byte 3
- .byte 15, 30
- .2byte 4
- .byte 16, 31
- .2byte 5
- .byte 17, 32
- .2byte 6
- .byte 18, 33
- .2byte 7
- .byte 8, 17
- .2byte 0
- .byte 255, 0
- .2byte 0
-
- .align 2
-Unknown_83ED020:
- .byte 22, 18
- .2byte 0
- .byte 23, 19
- .2byte 1
- .byte 24, 20
- .2byte 2
- .byte 14, 21
- .2byte 3
- .byte 15, 22
- .2byte 4
- .byte 16, 23
- .2byte 5
- .byte 17, 24
- .2byte 6
- .byte 18, 25
- .2byte 7
- .byte 8, 17
- .2byte 0
- .byte 255, 0
- .2byte 0
-
- .align 2
-gUnknown_083ED048:: @ 83ED048
- .4byte Unknown_83ECF98
- .4byte Unknown_83ECFA8
- .4byte Unknown_83ECFC4
- .4byte Unknown_83ECFD0
- .4byte Unknown_83ECFE8
- .4byte Unknown_83ED020
- .4byte Unknown_83ECFF8
-
- .align 2
-gUnknown_083ED064:: @ 83ED064
- .4byte sub_810639C
- .4byte sub_8106364
- .4byte sub_8106370
- .4byte nullsub_70
- .4byte nullsub_70
- .4byte sub_8106370
- .4byte sub_8106370
-
- .align 2
-gOamData_83ED080:: @ 83ED080
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gOamData_83ED088:: @ 83ED088
- .2byte 0x8000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gOamData_83ED090:: @ 83ED090
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0000
-
- .align 2
-gOamData_83ED098:: @ 83ED098
- .2byte 0x8000
- .2byte 0x8000
- .2byte 0x0000
-
- .align 2
-gOamData_83ED0A0:: @ 83ED0A0
- .2byte 0x0000
- .2byte 0x8000
- .2byte 0x0000
-
- .align 2
-gOamData_83ED0A8:: @ 83ED0A8
- .2byte 0x8000
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gOamData_83ED0B0:: @ 83ED0B0
- .2byte 0x4000
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gOamData_83ED0B8:: @ 83ED0B8
- .2byte 0x0000
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gSpriteImageTable_83ED0C0:: @ 83ED0C0
- obj_frame_tiles gSharedMem + 0x13200, 0x800
- obj_frame_tiles gSharedMem + 0x13A00, 0x800
- obj_frame_tiles gSharedMem + 0x14200, 0x800
- obj_frame_tiles gSharedMem + 0x14A00, 0x800
- obj_frame_tiles gSharedMem + 0x15200, 0x800
-
- .align 2
-gSpriteImageTable_83ED0E8:: @ 83ED0E8
- obj_frame_tiles gSharedMem + 0x15A00, 0x300
-
- .align 2
-gSpriteImageTable_83ED0F0:: @ 83ED0F0
- obj_frame_tiles gSharedMem + 0x15D00, 0x500
-
- .align 2
-gSpriteImageTable_83ED0F8:: @ 83ED0F8
- obj_frame_tiles gSharedMem + 0x16200, 0x600
-
- .align 2
-gSpriteImageTable_83ED100:: @ 83ED100
- obj_frame_tiles gSpriteImage_8E988E8, 0x80
- obj_frame_tiles gSpriteImage_8E98968, 0x80
- obj_frame_tiles gSpriteImage_8E989E8, 0x80
- obj_frame_tiles gSpriteImage_8E98A68, 0x80
- obj_frame_tiles gSpriteImage_8E98AE8, 0x80
- obj_frame_tiles gSpriteImage_8E98B68, 0x80
-
- .align 2
-gSpriteImageTable_83ED130:: @ 83ED130
- obj_frame_tiles gSpriteImage_8E991E8, 0x200
-
- .align 2
-gSpriteImageTable_83ED138:: @ 83ED138
- obj_frame_tiles gSpriteImage_8E99808, 0x40
-
- .align 2
-gSpriteImageTable_83ED140:: @ 83ED140
- obj_frame_tiles gSpriteImage_8E98BE8, 0x100
- obj_frame_tiles gSpriteImage_8E98CE8, 0x100
-
- .align 2
-gSpriteImageTable_83ED150:: @ 83ED150
- obj_frame_tiles gSpriteImage_8E993E8, 0x400
-
- .align 2
-gSpriteImageTable_83ED158:: @ 83ED158
- obj_frame_tiles gSpriteImage_8E98DE8, 0x200
- obj_frame_tiles gSpriteImage_8E98FE8, 0x200
-
- .align 2
-gSpriteImageTable_83ED168:: @ 83ED168
- obj_frame_tiles gSpriteImage_8E98848, 0x20
-
- .align 2
-gSpriteImageTable_83ED170:: @ 83ED170
- obj_frame_tiles gSpriteImage_8E98868, 0x80
-
- .align 2
-gSpriteImageTable_83ED178:: @ 83ED178
- obj_frame_tiles gSharedMem + 0x10000, 0x600
-
- .align 2
-gSpriteImageTable_83ED180:: @ 83ED180
- obj_frame_tiles gSharedMem + 0x10600, 0x200
-
- .align 2
-gSpriteImageTable_83ED188:: @ 83ED188
- obj_frame_tiles gSharedMem + 0x10800, 0x200
-
- .align 2
-gSpriteImageTable_83ED190:: @ 83ED190
- obj_frame_tiles gSharedMem + 0x10A00, 0x200
-
- .align 2
-gSpriteImageTable_83ED198:: @ 83ED198
- obj_frame_tiles gSharedMem + 0x10C00, 0x300
-
- .align 2
-gSpriteImageTable_83ED1A0:: @ 83ED1A0
- obj_frame_tiles gSharedMem + 0x11000, 0x400
-
- .align 2
-gSpriteImageTable_83ED1A8:: @ 83ED1A8
- obj_frame_tiles gSharedMem + 0x11400, 0x200
-
- .align 2
-gSpriteImageTable_83ED1B0:: @ 83ED1B0
- obj_frame_tiles gSharedMem + 0x11600, 0x300
-
- .align 2
-gSpriteImageTable_83ED1B8:: @ 83ED1B8
- obj_frame_tiles gSharedMem + 0x11900, 0x300
-
- .align 2
-gSpriteImageTable_83ED1C0:: @ 83ED1C0
- obj_frame_tiles gSharedMem + 0x11C00, 0x200
- obj_frame_tiles gSharedMem + 0x11E00, 0x200
- obj_frame_tiles gSharedMem + 0x11E00, 0x200 @ is this a typo?
-
- .align 2
-gSpriteImageTable_83ED1D8:: @ 83ED1D8
- obj_frame_tiles gSharedMem + 0x12000, 0x280
-
- .align 2
-gSpriteImageTable_83ED1E0:: @ 83ED1E0
- obj_frame_tiles gSharedMem + 0x12280, 0x80
- obj_frame_tiles gSharedMem + 0x12300, 0x80
- obj_frame_tiles gSharedMem + 0x12380, 0x80
- obj_frame_tiles gSharedMem + 0x12400, 0x80
- obj_frame_tiles gSharedMem + 0x12480, 0x80
-
- .align 2
-gSpriteImageTable_83ED208:: @ 83ED208
- obj_frame_tiles gSharedMem + 0x12600, 0x480
- obj_frame_tiles gSharedMem + 0x12A80, 0x480
-
- .align 2
-gSpriteImageTable_83ED218:: @ 83ED218
- obj_frame_tiles gSharedMem + 0x12F00, 0x180
- obj_frame_tiles gSharedMem + 0x13080, 0x180
-
- .align 2
-gSpriteImageTable_83ED228:: @ 83ED228
- obj_frame_tiles gSpriteImage_8E98828, 0x20
-
- .align 2
-gSpriteAnim_83ED230:: @ 83ED230
- obj_image_anim_frame 0, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED238:: @ 83ED238
- obj_image_anim_frame 0, 1
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83ED240:: @ 83ED240
- obj_image_anim_frame 0, 16
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED248:: @ 83ED248
- obj_image_anim_frame 1, 16
- obj_image_anim_frame 0, 16
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83ED254:: @ 83ED254
- obj_image_anim_frame 1, 8
- obj_image_anim_frame 0, 8
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83ED260:: @ 83ED260
- obj_image_anim_frame 1, 4
- obj_image_anim_frame 0, 4
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83ED26C:: @ 83ED26C
- obj_image_anim_frame 2, 32
- obj_image_anim_frame 3, 32
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83ED278:: @ 83ED278
- obj_image_anim_frame 4, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED280:: @ 83ED280
- obj_image_anim_frame 0, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED288:: @ 83ED288
- obj_image_anim_frame 1, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED290:: @ 83ED290
- obj_image_anim_frame 2, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED298:: @ 83ED298
- obj_image_anim_frame 3, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED2A0:: @ 83ED2A0
- obj_image_anim_frame 4, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED2A8:: @ 83ED2A8
- obj_image_anim_frame 5, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED2B0:: @ 83ED2B0
- obj_image_anim_frame 0, 4
- obj_image_anim_frame 1, 4
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83ED2BC:: @ 83ED2BC
- obj_image_anim_frame 0, 16
- obj_image_anim_frame 1, 16
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83ED2C8:: @ 83ED2C8
- obj_image_anim_frame 0, 30
- obj_image_anim_frame 1, 30
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83ED2D4:: @ 83ED2D4
- obj_image_anim_frame 1, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED2DC:: @ 83ED2DC
- obj_image_anim_frame 0, 30
- obj_image_anim_frame 1, 30
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83ED2E8:: @ 83ED2E8
- obj_image_anim_frame 0, 16
- obj_image_anim_frame 1, 16
- obj_image_anim_frame 0, 16
- obj_image_anim_frame 1, 16, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83ED2FC:: @ 83ED2FC
- obj_image_anim_frame 0, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED304:: @ 83ED304
- obj_image_anim_frame 0, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED30C:: @ 83ED30C
- obj_image_anim_frame 1, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED314:: @ 83ED314
- obj_image_anim_frame 2, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED31C:: @ 83ED31C
- obj_image_anim_frame 3, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83ED324:: @ 83ED324
- obj_image_anim_frame 4, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83ED32C:: @ 83ED32C
- .4byte gSpriteAnim_83ED230
-
- .align 2
-gSpriteAnimTable_83ED330:: @ 83ED330
- .4byte gSpriteAnim_83ED238
-
- .align 2
-gSpriteAnimTable_83ED334:: @ 83ED334
- .4byte gSpriteAnim_83ED240
- .4byte gSpriteAnim_83ED248
- .4byte gSpriteAnim_83ED254
- .4byte gSpriteAnim_83ED260
- .4byte gSpriteAnim_83ED26C
- .4byte gSpriteAnim_83ED278
-
- .align 2
-gSpriteAnimTable_83ED34C:: @ 83ED34C
- .4byte gSpriteAnim_83ED280
- .4byte gSpriteAnim_83ED288
- .4byte gSpriteAnim_83ED290
- .4byte gSpriteAnim_83ED298
- .4byte gSpriteAnim_83ED2A0
- .4byte gSpriteAnim_83ED2A8
-
- .align 2
-gSpriteAnimTable_83ED364:: @ 83ED364
- .4byte gSpriteAnim_83ED2B0
-
- .align 2
-gSpriteAnimTable_83ED368:: @ 83ED368
- .4byte gSpriteAnim_83ED2BC
-
- .align 2
-gSpriteAnimTable_83ED36C:: @ 83ED36C
- .4byte gSpriteAnim_83ED2C8
- .4byte gSpriteAnim_83ED2D4
-
- .align 2
-gSpriteAnimTable_83ED374:: @ 83ED374
- .4byte gSpriteAnim_83ED2DC
-
- .align 2
-gSpriteAnimTable_83ED378:: @ 83ED378
- .4byte gSpriteAnim_83ED2E8
- .4byte gSpriteAnim_83ED2FC
-
- .align 2
-gSpriteAnimTable_83ED380:: @ 83ED380
- .4byte gSpriteAnim_83ED304
- .4byte gSpriteAnim_83ED30C
- .4byte gSpriteAnim_83ED314
- .4byte gSpriteAnim_83ED31C
- .4byte gSpriteAnim_83ED324
-
- .align 2
-gSpriteAffineAnim_83ED394:: @ 83ED394
- obj_rot_scal_anim_frame 0x10, 0x10, 0, 0
- obj_rot_scal_anim_loop 0
- obj_rot_scal_anim_frame 0x1, 0x1, 0, 1
- obj_rot_scal_anim_loop 255
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_83ED3BC:: @ 83ED3BC
- .4byte gSpriteAffineAnim_83ED394
-
- .align 2
-gSpriteAffineAnim_83ED3C0:: @ 83ED3C0
- obj_rot_scal_anim_frame 0x0, 0x0, 8, 32
- obj_rot_scal_anim_frame 0x0, 0x0, 6, 32
- obj_rot_scal_anim_frame 0x0, 0x0, 4, 16
- obj_rot_scal_anim_frame 0x0, 0x0, 12, 2
- obj_rot_scal_anim_frame 0x0, 0x0, -12, 4
- obj_rot_scal_anim_frame 0x0, 0x0, 12, 2
- obj_rot_scal_anim_frame 0x0, 0x0, 12, 2
- obj_rot_scal_anim_frame 0x0, 0x0, -12, 4
- obj_rot_scal_anim_frame 0x0, 0x0, 12, 2
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_83ED410:: @ 83ED410
- .4byte gSpriteAffineAnim_83ED3C0
-
- .align 2
-gSpriteTemplate_83ED414:: @ 83ED414
- spr_template 0, 0, gOamData_83ED0A0, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, sub_8104F18
-
- .align 2
-gSpriteTemplate_83ED42C:: @ 83ED42C
- spr_template 7, 4, gOamData_83ED088, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, sub_810506C
-
- .align 2
-gSpriteTemplate_83ED444:: @ 83ED444
- spr_template 17, 0, gOamData_83ED0B8, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED45C:: @ 83ED45C
- spr_template 0xFFFF, 1, gOamData_83ED0B8, gSpriteAnimTable_83ED334, gSpriteImageTable_83ED0C0, gDummySpriteAffineAnimTable, sub_8105170
-
- .align 2
-gSpriteTemplate_83ED474:: @ 83ED474
- spr_template 0xFFFF, 2, gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0E8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED48C:: @ 83ED48C
- spr_template 0xFFFF, 3, gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0F0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED4A4:: @ 83ED4A4
- spr_template 0xFFFF, 3, gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0F8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED4BC:: @ 83ED4BC
- spr_template 0xFFFF, 4, gOamData_83ED090, gSpriteAnimTable_83ED34C, gSpriteImageTable_83ED100, gDummySpriteAffineAnimTable, sub_810535C
-
- .align 2
-gSpriteTemplate_83ED4D4:: @ 83ED4D4
- spr_template 0xFFFF, 4, gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED130, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED4EC:: @ 83ED4EC
- spr_template 0xFFFF, 4, gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED138, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED504:: @ 83ED504
- spr_template 0xFFFF, 4, gOamData_83ED098, gSpriteAnimTable_83ED364, gSpriteImageTable_83ED140, gDummySpriteAffineAnimTable, sub_810562C
-
- .align 2
-gSpriteTemplate_83ED51C:: @ 83ED51C
- spr_template 0xFFFF, 7, gOamData_83ED0A8, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED150, gDummySpriteAffineAnimTable, sub_8105784
-
- .align 2
-gSpriteTemplate_83ED534:: @ 83ED534
- spr_template 0xFFFF, 5, gOamData_83ED0A0, gSpriteAnimTable_83ED368, gSpriteImageTable_83ED158, gDummySpriteAffineAnimTable, sub_8105894
-
- .align 2
-gSpriteTemplate_83ED54C:: @ 83ED54C
- spr_template 0xFFFF, 4, gOamData_83ED080, gSpriteAnimTable_83ED330, gSpriteImageTable_83ED168, gDummySpriteAffineAnimTable, sub_810594C
-
- .align 2
-gSpriteTemplate_83ED564:: @ 83ED564
- spr_template 0xFFFF, 4, gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED170, gSpriteAffineAnimTable_83ED3BC, sub_8105A38
-
- .align 2
-gSpriteTemplate_83ED57C:: @ 83ED57C
- spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED178, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED594:: @ 83ED594
- spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED180, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED5AC:: @ 83ED5AC
- spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED188, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED5C4:: @ 83ED5C4
- spr_template 18, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED190, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED5DC:: @ 83ED5DC
- spr_template 0xFFFF, 6, gOamData_83ED0B0, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED198, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED5F4:: @ 83ED5F4
- spr_template 0xFFFF, 6, gOamData_83ED0B0, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1A0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED60C:: @ 83ED60C
- spr_template 19, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1A8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED624:: @ 83ED624
- spr_template 20, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1B0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED63C:: @ 83ED63C
- spr_template 21, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1B8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED654:: @ 83ED654
- spr_template 0xFFFF, 6, gOamData_83ED0A0, gSpriteAnimTable_83ED36C, gSpriteImageTable_83ED1C0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED66C:: @ 83ED66C
- spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1D8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED684:: @ 83ED684
- spr_template 0xFFFF, 6, gOamData_83ED090, gSpriteAnimTable_83ED380, gSpriteImageTable_83ED1E0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED69C:: @ 83ED69C
- spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED378, gSpriteImageTable_83ED208, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED6B4:: @ 83ED6B4
- spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED374, gSpriteImageTable_83ED218, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83ED6CC:: @ 83ED6CC
- spr_template 0xFFFF, 4, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED228, gSpriteAffineAnimTable_83ED410, sub_8105B70
-
- .align 2
-gSubspriteTable_83ED6E4:: @ 83ED6E4
- subsprite -64, -64, 3, 0, 64x64
- subsprite 0, -64, 3, 0, 64x64
- subsprite -64, 0, 3, 0, 64x64
- subsprite 0, 0, 3, 0, 64x64
-
- .align 2
-gSubspriteTables_83ED704:: @ 83ED704
- .4byte 4, gSubspriteTable_83ED6E4
-
- .align 2
-gSubspriteTable_83ED70C:: @ 83ED70C
- subsprite -32, -12, 1, 0, 32x8
- subsprite 0, -12, 1, 4, 32x8
- subsprite -32, -4, 1, 8, 32x8
- subsprite 0, -4, 1, 12, 32x8
- subsprite -32, 4, 1, 16, 32x8
- subsprite 0, 4, 1, 20, 32x8
-
- .align 2
-gSubspriteTables_83ED73C:: @ 83ED73C
- .4byte 6, gSubspriteTable_83ED70C
-
- .align 2
-gSubspriteTable_83ED744:: @ 83ED744
- subsprite -32, -20, 1, 0, 64x32
- subsprite -32, 12, 1, 32, 32x8
- subsprite 0, 12, 1, 36, 32x8
-
- .align 2
-gSubspriteTables_83ED75C:: @ 83ED75C
- .4byte 3, gSubspriteTable_83ED744
-
- .align 2
-gSubspriteTable_83ED764:: @ 83ED764
- subsprite -32, -24, 1, 0, 64x32
- subsprite -32, 8, 1, 32, 32x8
- subsprite 0, 8, 1, 36, 32x8
- subsprite -32, 16, 1, 40, 32x8
- subsprite 0, 16, 1, 44, 32x8
-
- .align 2
-gSubspriteTables_83ED78C:: @ 83ED78C
- .4byte 5, gSubspriteTable_83ED764
-
- .align 2
-gSubspriteTable_83ED794:: @ 83ED794
- subsprite -32, -8, 1, 0, 32x8
- subsprite 0, -8, 1, 4, 32x8
- subsprite -32, 0, 1, 8, 32x8
- subsprite 0, 0, 1, 12, 32x8
-
- .align 2
-gSubspriteTables_83ED7B4:: @ 83ED7B4
- .4byte 4, gSubspriteTable_83ED794
-
- .align 2
-gSubspriteTable_83ED7BC:: @ 83ED7BC
- subsprite -8, -12, 1, 0, 16x8
- subsprite -8, -4, 1, 0, 16x8
- subsprite -8, 4, 1, 0, 16x8
-
- .align 2
-gSubspriteTables_83ED7D4:: @ 83ED7D4
- .4byte 3, gSubspriteTable_83ED7BC
-
- .align 2
-gSubspriteTable_83ED7DC:: @ 83ED7DC
- subsprite -32, -24, 3, 0, 64x32
- subsprite -32, 8, 3, 32, 32x8
- subsprite 0, 8, 3, 36, 32x8
- subsprite -32, 16, 3, 40, 32x8
- subsprite 0, 16, 3, 44, 32x8
-
- .align 2
-gSubspriteTables_83ED804:: @ 83ED804
- .4byte 5, gSubspriteTable_83ED7DC
-
- .align 2
-gSubspriteTable_83ED80C:: @ 83ED80C
- subsprite -32, -8, 3, 0, 32x8
- subsprite 0, -8, 3, 4, 32x8
- subsprite -32, 0, 3, 8, 32x8
- subsprite 0, 0, 3, 12, 32x8
-
- .align 2
-gSubspriteTables_83ED82C:: @ 83ED82C
- .4byte 4, gSubspriteTable_83ED80C
-
- .align 2
-gSubspriteTable_83ED834:: @ 83ED834
- subsprite -32, -8, 3, 0, 32x8
- subsprite 0, -8, 3, 4, 32x8
- subsprite -32, 0, 3, 8, 32x8
- subsprite 0, 0, 3, 12, 32x8
-
- .align 2
-gSubspriteTables_83ED854:: @ 83ED854
- .4byte 4, gSubspriteTable_83ED834
-
- .align 2
-gSubspriteTable_83ED85C:: @ 83ED85C
- subsprite -32, -8, 3, 0, 32x8
- subsprite 0, -8, 3, 4, 32x8
- subsprite -32, 0, 3, 8, 32x8
- subsprite 0, 0, 3, 12, 32x8
-
- .align 2
-gSubspriteTables_83ED87C:: @ 83ED87C
- .4byte 4, gSubspriteTable_83ED85C
-
- .align 2
-gSubspriteTable_83ED884:: @ 83ED884
- subsprite -32, -12, 3, 0, 32x8
- subsprite 0, -12, 3, 4, 32x8
- subsprite -32, -4, 3, 8, 32x8
- subsprite 0, -4, 3, 12, 32x8
- subsprite -32, 4, 3, 16, 32x8
- subsprite 0, 4, 3, 20, 32x8
-
- .align 2
-gSubspriteTables_83ED8B4:: @ 83ED8B4
- .4byte 6, gSubspriteTable_83ED884
-
- .align 2
-gSubspriteTable_83ED8BC:: @ 83ED8BC
- subsprite -16, -16, 3, 0, 32x32
-
- .align 2
-gSubspriteTable_83ED8C4:: @ 83ED8C4
- subsprite -8, -8, 3, 16, 16x16
-
- .align 2
-gSubspriteTables_83ED8CC:: @ 83ED8CC
- .4byte 1, gSubspriteTable_83ED8BC
- .4byte 1, gSubspriteTable_83ED8C4
-
- .align 2
-gSubspriteTable_83ED8DC:: @ 83ED8DC
- subsprite -24, -24, 3, 0, 32x8
- subsprite 8, -24, 3, 4, 16x8
- subsprite -24, -16, 3, 6, 32x8
- subsprite 8, -16, 3, 10, 16x8
- subsprite -24, -8, 3, 12, 32x8
- subsprite 8, -8, 3, 16, 16x8
- subsprite -24, 0, 3, 18, 32x8
- subsprite 8, 0, 3, 22, 16x8
- subsprite -24, 8, 3, 24, 32x8
- subsprite 8, 8, 3, 28, 16x8
- subsprite -24, 16, 3, 30, 32x8
- subsprite 8, 16, 3, 34, 16x8
-
- .align 2
-gSubspriteTables_83ED93C:: @ 83ED93C
- .4byte 12, gSubspriteTable_83ED8DC
-
- .align 2
-gSubspriteTable_83ED944:: @ 83ED944
- subsprite -16, -12, 3, 0, 32x16
- subsprite -16, 4, 3, 8, 16x8
- subsprite 0, 4, 3, 10, 16x8
-
- .align 2
-gSubspriteTables_83ED95C:: @ 83ED95C
- .4byte 3, gSubspriteTable_83ED944
-
- .align 2
-gSubspriteTable_83ED964:: @ 83ED964
- subsprite -8, -8, 3, 0, 16x8
- subsprite -8, 0, 3, 8, 16x8
-
- .align 2
-gSubspriteTables_83ED974:: @ 83ED974
- .4byte 2, gSubspriteTable_83ED964
-
- .align 2
-gSubspriteTable_83ED97C:: @ 83ED97C
- subsprite -8, -8, 3, 2, 16x8
- subsprite -8, 0, 3, 10, 16x8
-
- .align 2
-gSubspriteTables_83ED98C:: @ 83ED98C
- .4byte 2, gSubspriteTable_83ED97C
-
- .align 2
-gSubspriteTable_83ED994:: @ 83ED994
- subsprite -8, -8, 3, 4, 16x8
- subsprite -8, 0, 3, 12, 16x8
-
- .align 2
-gSubspriteTables_83ED9A4:: @ 83ED9A4
- .4byte 2, gSubspriteTable_83ED994
-
- .align 2
-gSubspriteTable_83ED9AC:: @ 83ED9AC
- subsprite -8, -8, 3, 6, 16x8
- subsprite -8, 0, 3, 14, 16x8
-
- .align 2
-gSubspriteTables_83ED9BC:: @ 83ED9BC
- .4byte 2, gSubspriteTable_83ED9AC
-
- .align 2
-gSubspriteTable_83ED9C4:: @ 83ED9C4
- subsprite -8, -8, 3, 0, 16x8
- subsprite -8, 0, 3, 8, 16x8
-
- .align 2
-gSubspriteTables_83ED9D4:: @ 83ED9D4
- .4byte 2, gSubspriteTable_83ED9C4
-
- .align 2
-gSubspriteTable_83ED9DC:: @ 83ED9DC
- subsprite -4, -8, 3, 2, 8x8
- subsprite -4, 0, 3, 10, 8x8
-
- .align 2
-gSubspriteTables_83ED9EC:: @ 83ED9EC
- .4byte 2, gSubspriteTable_83ED9DC
-
- .align 2
-gSubspriteTable_83ED9F4:: @ 83ED9F4
- subsprite -8, -8, 3, 3, 16x8
- subsprite -8, 0, 3, 11, 16x8
-
- .align 2
-gSubspriteTables_83EDA04:: @ 83EDA04
- .4byte 2, gSubspriteTable_83ED9F4
-
- .align 2
-gSubspriteTable_83EDA0C:: @ 83EDA0C
- subsprite -4, -8, 3, 5, 8x8
- subsprite -4, 0, 3, 13, 8x8
-
- .align 2
-gSubspriteTables_83EDA1C:: @ 83EDA1C
- .4byte 2, gSubspriteTable_83EDA0C
-
- .align 2
-gSubspriteTable_83EDA24:: @ 83EDA24
- subsprite -8, -8, 3, 6, 16x8
- subsprite -8, 0, 3, 14, 16x8
-
- .align 2
-gSubspriteTables_83EDA34:: @ 83EDA34
- .4byte 2, gSubspriteTable_83EDA24
-
- .align 2
-gSubspriteTable_83EDA3C:: @ 83EDA3C
- subsprite -12, -12, 3, 0, 16x8
- subsprite 4, -12, 3, 2, 8x8
- subsprite -12, -4, 3, 8, 16x8
- subsprite 4, -4, 3, 10, 8x8
- subsprite -12, 4, 3, 16, 16x8
- subsprite 4, 4, 3, 18, 8x8
-
- .align 2
-gSubspriteTables_83EDA6C:: @ 83EDA6C
- .4byte 6, gSubspriteTable_83EDA3C
-
- .align 2
-gSubspriteTable_83EDA74:: @ 83EDA74
- subsprite -8, -12, 3, 3, 16x8
- subsprite -8, -4, 3, 11, 16x8
- subsprite -8, 4, 3, 19, 16x8
-
- .align 2
-gSubspriteTables_83EDA8C:: @ 83EDA8C
- .4byte 3, gSubspriteTable_83EDA74
-
- .align 2
-gSubspriteTable_83EDA94:: @ 83EDA94
- subsprite -12, -12, 3, 5, 16x8
- subsprite 4, -12, 3, 7, 8x8
- subsprite -12, -4, 3, 13, 16x8
- subsprite 4, -4, 3, 15, 8x8
- subsprite -12, 4, 3, 21, 16x8
- subsprite 4, 4, 3, 23, 8x8
-
- .align 2
-gSubspriteTables_83EDAC4:: @ 83EDAC4
- .4byte 6, gSubspriteTable_83EDA94
-
- .align 2
-gSubspriteTable_83EDACC:: @ 83EDACC
- subsprite -12, -12, 3, 0, 16x8
- subsprite 4, -12, 3, 2, 8x8
- subsprite -12, -4, 3, 8, 16x8
- subsprite 4, -4, 3, 10, 8x8
- subsprite -12, 4, 3, 16, 16x8
- subsprite 4, 4, 3, 18, 8x8
-
- .align 2
-gSubspriteTables_83EDAFC:: @ 83EDAFC
- .4byte 6, gSubspriteTable_83EDACC
-
- .align 2
-gSubspriteTable_83EDB04:: @ 83EDB04
- subsprite -8, -12, 3, 3, 16x8
- subsprite -8, -4, 3, 11, 16x8
- subsprite -8, 4, 3, 19, 16x8
-
- .align 2
-gSubspriteTables_83EDB1C:: @ 83EDB1C
- .4byte 3, gSubspriteTable_83EDB04
-
- .align 2
-gSubspriteTable_83EDB24:: @ 83EDB24
- subsprite -12, -12, 3, 5, 16x8
- subsprite 4, -12, 3, 7, 8x8
- subsprite -12, -4, 3, 13, 16x8
- subsprite 4, -4, 3, 15, 8x8
- subsprite -12, 4, 3, 21, 16x8
- subsprite 4, 4, 3, 23, 8x8
-
- .align 2
-gSubspriteTables_83EDB54:: @ 83EDB54
- .4byte 6, gSubspriteTable_83EDB24
-
- .align 2
-gUnknown_083EDB5C:: @ 83EDB5C
- .4byte gSpriteTemplate_83ED57C
- .4byte gSpriteTemplate_83ED594
- .4byte gSpriteTemplate_83ED5AC
- .4byte gSpriteTemplate_83ED5DC
- .4byte gSpriteTemplate_83ED5F4
- .4byte gSpriteTemplate_83ED654
- .4byte gSpriteTemplate_83ED66C
- .4byte gSpriteTemplate_83ED684
- .4byte gSpriteTemplate_83ED69C
- .4byte gSpriteTemplate_83ED6B4
- .4byte gSpriteTemplate_83ED5C4
- .4byte gSpriteTemplate_83ED5C4
- .4byte gSpriteTemplate_83ED5C4
- .4byte gSpriteTemplate_83ED5C4
- .4byte gSpriteTemplate_83ED60C
- .4byte gSpriteTemplate_83ED60C
- .4byte gSpriteTemplate_83ED60C
- .4byte gSpriteTemplate_83ED60C
- .4byte gSpriteTemplate_83ED60C
- .4byte gSpriteTemplate_83ED624
- .4byte gSpriteTemplate_83ED624
- .4byte gSpriteTemplate_83ED624
- .4byte gSpriteTemplate_83ED63C
- .4byte gSpriteTemplate_83ED63C
- .4byte gSpriteTemplate_83ED63C
- .4byte gDummySpriteTemplate
-
- .align 2
-gUnknown_083EDBC4:: @ 83EDBC4
- .4byte gSubspriteTables_83ED804
- .4byte gSubspriteTables_83ED82C
- .4byte gSubspriteTables_83ED854
- .4byte gSubspriteTables_83ED8B4
- .4byte NULL
- .4byte NULL
- .4byte gSubspriteTables_83ED8CC
- .4byte NULL
- .4byte gSubspriteTables_83ED93C
- .4byte gSubspriteTables_83ED95C
- .4byte gSubspriteTables_83ED974
- .4byte gSubspriteTables_83ED98C
- .4byte gSubspriteTables_83ED9A4
- .4byte gSubspriteTables_83ED9BC
- .4byte gSubspriteTables_83ED9D4
- .4byte gSubspriteTables_83ED9EC
- .4byte gSubspriteTables_83EDA04
- .4byte gSubspriteTables_83EDA1C
- .4byte gSubspriteTables_83EDA34
- .4byte gSubspriteTables_83EDA6C
- .4byte gSubspriteTables_83EDA8C
- .4byte gSubspriteTables_83EDAC4
- .4byte gSubspriteTables_83EDAFC
- .4byte gSubspriteTables_83EDB1C
- .4byte gSubspriteTables_83EDB54
- .4byte NULL
-
- .align 2
-gUnknown_083EDC2C:: @ 83EDC2C
- obj_tiles gSlotMachineReelSymbol1Tiles, 0x200, 0
- obj_tiles gSlotMachineReelSymbol2Tiles, 0x200, 1
- obj_tiles gSlotMachineReelSymbol3Tiles, 0x200, 2
- obj_tiles gSlotMachineReelSymbol4Tiles, 0x200, 3
- obj_tiles gSlotMachineReelSymbol5Tiles, 0x200, 4
- obj_tiles gSlotMachineReelSymbol6Tiles, 0x200, 5
- obj_tiles gSlotMachineReelSymbol7Tiles, 0x200, 6
- obj_tiles gSlotMachineNumber0Tiles, 0x40, 7
- obj_tiles gSlotMachineNumber1Tiles, 0x40, 8
- obj_tiles gSlotMachineNumber2Tiles, 0x40, 9
- obj_tiles gSlotMachineNumber3Tiles, 0x40, 10
- obj_tiles gSlotMachineNumber4Tiles, 0x40, 11
- obj_tiles gSlotMachineNumber5Tiles, 0x40, 12
- obj_tiles gSlotMachineNumber6Tiles, 0x40, 13
- obj_tiles gSlotMachineNumber7Tiles, 0x40, 14
- obj_tiles gSlotMachineNumber8Tiles, 0x40, 15
- obj_tiles gSlotMachineNumber9Tiles, 0x40, 16
- obj_tiles gSharedMem + 0x10A00, 0x200, 18
- obj_tiles gSharedMem + 0x11400, 0x200, 19
- obj_tiles gSharedMem + 0x11600, 0x300, 20
- obj_tiles gSharedMem + 0x11900, 0x300, 21
- null_obj_tiles
-
- .align 2
-gUnknown_083EDCDC:: @ 83EDCDC
- obj_tiles gSharedMem + 0x10000, 2048, 0x0011
-
- .align 2
-gUnknown_083EDCE4:: @ 83EDCE4
- .4byte gUnknownPalette_08E997E8
-
-UnknownPalette_83EDCE8:
- .ifdef SAPPHIRE
- .incbin "graphics/unknown/sapphire_83EDD40.gbapal"
- .else
- .incbin "graphics/unknown/ruby_83EDCE8.gbapal"
- .endif
-
- .align 2
-gUnknown_083EDD08:: @ 83EDD08
- .4byte UnknownPalette_83EDCE8 + 10 * 2
- .4byte UnknownPalette_83EDCE8 + 11 * 2
- .4byte UnknownPalette_83EDCE8 + 12 * 2
- .4byte UnknownPalette_83EDCE8 + 13 * 2
- .4byte UnknownPalette_83EDCE8 + 14 * 2
-
- .align 2
-gUnknown_083EDD1C:: @ 83EDD1C
- .4byte gUnknown_08E95A18 + 148
- .4byte gUnknown_08E95A18 + 150
- .4byte gUnknown_08E95A18 + 152
- .4byte gUnknown_08E95A18 + 154
- .4byte gUnknown_08E95A18 + 156
-
-gUnknown_083EDD30:: @ 83EDD30
- .byte 0x4A, 0x4B, 0x4C, 0x4E, 0x4D
-
-gUnknown_083EDD35:: @ 83EDD35
- .byte 0, 0, 1, 2, 3, 4
-
-gUnknown_083EDD3B:: @ 83EDD3B
- .byte 1, 2, 2
-
- .align 1
-Unknown_83EDD3E:
- .ifdef SAPPHIRE
- .incbin "graphics/unknown/sapphire_83EDD96.gbapal"
- .else
- .incbin "graphics/unknown/ruby_83EDD3E.gbapal"
- .endif
-
- .align 1
-Unknown_83EDD5E:
- .ifdef SAPPHIRE
- .incbin "graphics/unknown/sapphire_83EDDB6.gbapal"
- .else
- .incbin "graphics/unknown/ruby_83EDD5E.gbapal"
- .endif
-
- .align 1
-Unknown_83EDD7E:
- .ifdef SAPPHIRE
- .incbin "graphics/unknown/sapphire_83EDDD6.gbapal"
- .else
- .incbin "graphics/unknown/ruby_83EDD7E.gbapal"
- .endif
-
- .align 2
-gUnknown_083EDDA0:: @ 83EDDA0
- .4byte Unknown_83EDD3E
- .4byte Unknown_83EDD5E
- .4byte Unknown_83EDD7E
-
- .align 2
-gUnknown_083EDDAC:: @ 83EDDAC
- .4byte gUnknown_08E95A18 + 32
-
- .align 1
-Palette_83EDDB0:
- .incbin "graphics/slot_machine/83EDDB0.gbapal"
-
- .align 1
-Palette_83EDDD0:
- .incbin "graphics/slot_machine/83EDDD0.gbapal"
-
- .align 1
-Palette_83EDDF0:
- .incbin "graphics/slot_machine/83EDDF0.gbapal"
-
- .align 2
-gUnknown_083EDE10:: @ 83EDE10
- .4byte Palette_83EDDB0
- .4byte Palette_83EDDD0
- .4byte Palette_83EDDF0
- .4byte gSlotMachineSpritePalette6
-
- .align 2
-gUnknown_083EDE20:: @ 83EDE20
- .4byte gSlotMachineSpritePalette6
-
- .align 1
-gPalette_83EDE24:: @ 83EDE24
- .incbin "graphics/slot_machine/83EDE24_pal.bin"
-
- .align 2
-gSlotMachineSpritePalettes:: @ 83EDE44
- obj_pal gSlotMachineSpritePalette0, 0
- obj_pal gSlotMachineSpritePalette1, 1
- obj_pal gSlotMachineSpritePalette2, 2
- obj_pal gSlotMachineSpritePalette3, 3
- obj_pal gSlotMachineSpritePalette4, 4
- obj_pal gSlotMachineSpritePalette5, 5
- obj_pal gSlotMachineSpritePalette6, 6
- obj_pal gSlotMachineSpritePalette4, 7
- null_obj_pal
-
- .align 2
-gUnknown_083EDE8C:: @ 83EDE8C
- .incbin "graphics/slot_machine/reel_time.4bpp.lz"
-
- .align 2
-gReelTimeWindowTilemap:: @ 83EEFE0
- .incbin "graphics/slot_machine/reel_time_window_map.bin"
diff --git a/include/ewram.h b/include/ewram.h
index eacc02cab..5a350840a 100755
--- a/include/ewram.h
+++ b/include/ewram.h
@@ -24,7 +24,7 @@ extern u8 gSharedMem[];
#define ewram0arr ((u8 (*)[32])gSharedMem)
#define eVoidSharedArr (void *)(ewram_addr + 0x0)
#define eVoidSharedArr2 (u32)(ewram_addr) // ew(ram)
-#define ewram0_8 ((struct UnkStruct2000000 *)(gSharedMem + 0x0))
+#define eSlotMachine ((struct SlotMachineEwramStruct *)(gSharedMem + 0x0))
#define ewram0_9(i) (u8 *)(ewram_addr + (i * 0x20))
#define ewram0_10 (*(struct UnknownPokenav0*)(gSharedMem + 0))
#define ewram0_11 (*(struct UnknownPokenav0_1*)(gSharedMem + 0))
@@ -70,7 +70,7 @@ extern u8 gSharedMem[];
#define ewramF800 (&gSharedMem[0xF800])
#define ewram_2010000 (*(struct TradeEwramStruct *)(gSharedMem + 0x10000))
#define ewram10000 (&gSharedMem[0x10000])
-#define ewram10000_2 (void *)(gSharedMem + 0x10000) // slot machine
+#define eSlotMachineGfxBuffer (void *)(gSharedMem + 0x10000) // slot machine
#define ePokedexPalAddr3 (void *)(gSharedMem + 0x10000)
#define ewram10800 (&gSharedMem[0x10800])
#define ewram11000 (&gSharedMem[0x11000])
@@ -78,6 +78,7 @@ extern u8 gSharedMem[];
#define ewram12000 (&gSharedMem[0x12000])
#define ewram12800 (&gSharedMem[0x12800])
#define ewram13000 (&gSharedMem[0x13000])
+#define eSlotMachineReelTimeGfxBuffer (&gSharedMem[0x13200])
#define ewram13800 (&gSharedMem[0x13800])
#define EWRAM_14000 ((u8 *)(gSharedMem + 0x14000))
#define ewram14000 (&gSharedMem[0x14000])
diff --git a/include/field_effect.h b/include/field_effect.h
index 9f71efba1..bb859074f 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -252,6 +252,7 @@ void FreeResourcesAndDestroySprite(struct Sprite *sprite);
void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
void sub_80878A8(void);
void sub_8087BA8(void);
+void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b);
extern s32 gFieldEffectArguments[8];
diff --git a/include/global.h b/include/global.h
index 4ae5de873..76300d36d 100644
--- a/include/global.h
+++ b/include/global.h
@@ -5,7 +5,7 @@
#include "config.h"
// IDE support
-#ifdef __APPLE__
+#if defined(__APPLE__) || defined(__CYGWIN__)
#define _(x) x
#define __(x) x
#define INCBIN_U8 {0}
@@ -27,14 +27,6 @@ int strcmp (const char *, const char *);
#define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided\n")
-#define nonmatching(fndec, x) {\
-__attribute__((naked))\
-fndec\
-{\
- asm_unified(x);\
-}\
-}
-
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
#define POKEMON_SLOTS_NUMBER 412
diff --git a/include/graphics.h b/include/graphics.h
index 488de07c0..17abb840e 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -2656,4 +2656,51 @@ extern const u8 gNamingScreenRightPointingTriangleTiles[];
extern const u8 gNamingScreenUnderscoreTiles[];
extern const u16 gNamingScreenPalettes[][16];
+extern const u8 gSpriteImage_8E988E8[];
+extern const u8 gSpriteImage_8E98968[];
+extern const u8 gSpriteImage_8E989E8[];
+extern const u8 gSpriteImage_8E98A68[];
+extern const u8 gSpriteImage_8E98AE8[];
+extern const u8 gSpriteImage_8E98B68[];
+extern const u8 gSpriteImage_8E991E8[];
+extern const u8 gSpriteImage_8E99808[];
+extern const u8 gSpriteImage_8E98BE8[];
+extern const u8 gSpriteImage_8E98CE8[];
+extern const u8 gSpriteImage_8E993E8[];
+extern const u8 gSpriteImage_8E98DE8[];
+extern const u8 gSpriteImage_8E98FE8[];
+extern const u8 gSpriteImage_8E98848[];
+extern const u8 gSpriteImage_8E98868[];
+extern const u8 gSpriteImage_8E98828[];
+extern const u8 gSlotMachineReelSymbol1Tiles[];
+extern const u8 gSlotMachineReelSymbol2Tiles[];
+extern const u8 gSlotMachineReelSymbol3Tiles[];
+extern const u8 gSlotMachineReelSymbol4Tiles[];
+extern const u8 gSlotMachineReelSymbol5Tiles[];
+extern const u8 gSlotMachineReelSymbol6Tiles[];
+extern const u8 gSlotMachineReelSymbol7Tiles[];
+extern const u8 gSlotMachineNumber0Tiles[];
+extern const u8 gSlotMachineNumber1Tiles[];
+extern const u8 gSlotMachineNumber2Tiles[];
+extern const u8 gSlotMachineNumber3Tiles[];
+extern const u8 gSlotMachineNumber4Tiles[];
+extern const u8 gSlotMachineNumber5Tiles[];
+extern const u8 gSlotMachineNumber6Tiles[];
+extern const u8 gSlotMachineNumber7Tiles[];
+extern const u8 gSlotMachineNumber8Tiles[];
+extern const u8 gSlotMachineNumber9Tiles[];
+extern const u8 gUnknownPalette_08E997E8[];
+extern const u16 gSlotMachineSpritePalette0[];
+extern const u16 gSlotMachineSpritePalette1[];
+extern const u16 gSlotMachineSpritePalette2[];
+extern const u16 gSlotMachineSpritePalette3[];
+extern const u16 gSlotMachineSpritePalette4[];
+extern const u16 gSlotMachineSpritePalette5[];
+extern const u16 gSlotMachineSpritePalette6[];
+extern const u8 gSlotMachine_Gfx[];
+extern const u8 gSlotMachineReelTimeLights_Gfx[];
+extern const u16 gUnknown_08E95A18[];
+extern const u16 gUnknown_08E95AB8[];
+extern const u16 gUnknown_08E95FB8[];
+
#endif // GUARD_GRAPHICS_H
diff --git a/include/heated_rock.h b/include/heated_rock.h
new file mode 100644
index 000000000..26856fe7f
--- /dev/null
+++ b/include/heated_rock.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_HEATED_ROCK_H
+#define GUARD_HEATED_ROCK_H
+
+// heated_rock (moves heated rock sprites)
+// Used in Eruption.
+
+u16 sub_80D5940(u8 spriteId);
+void sub_80D5994(struct Sprite *sprite, s16 x, s16 y);
+
+#endif // GUARD_HEATED_ROCK_H \ No newline at end of file
diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h
index 04d996a21..dda90c48f 100644
--- a/include/rom_8077ABC.h
+++ b/include/rom_8077ABC.h
@@ -46,6 +46,7 @@ void sub_8078E70(u8 sprite, u8);
void sub_8078F40(u8 sprite);
void sub_8078F9C(u8 sprite);
void sub_8079518(struct Sprite *sprite);
+void sub_8079534(struct Sprite *sprite);
void sub_80796F8(u8 task);
void sub_80797EC(struct Task *task);
void sub_8079814(u8 taskId);
@@ -53,6 +54,9 @@ void sub_8079A64(u8 sprite);
u16 sub_8079B10(u8 sprite);
void sub_8079BF4(s16 *bottom, s16 *top, const void *ptr);
void *sub_8079BFC(s16 bottom, s16 top);
+// u8 a2 := u8 sprite
+void sub_8079C08(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7);
+u8 sub_8079C74(struct Task *task);
void sub_8079E24();
u8 sub_8079E90(u8 slot);
u8 GetBankIdentity_permutated(u8 slot);
@@ -77,6 +81,7 @@ void sub_80785E4(struct Sprite *sprite);
void sub_8078278(struct Sprite *sprite);
void sub_8078C00(struct Sprite *sprite);
void sub_8078114(struct Sprite *sprite);
+void sub_8078174(struct Sprite *sprite);
void sub_80793C4(struct Sprite *sprite);
void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4);
u8 sub_8079ED4(u8 slot);
diff --git a/include/slot_machine.h b/include/slot_machine.h
index c39aa7ca8..f886d9239 100644
--- a/include/slot_machine.h
+++ b/include/slot_machine.h
@@ -1,8 +1,79 @@
#ifndef GUARD_SLOT_MACHINE_H
#define GUARD_SLOT_MACHINE_H
-void PlaySlotMachine(u8, void *);
+enum {
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_REPLAY
+};
+
+enum {
+ SLOT_MACHINE_MATCHED_1CHERRY,
+ SLOT_MACHINE_MATCHED_2CHERRY,
+ SLOT_MACHINE_MATCHED_REPLAY,
+ SLOT_MACHINE_MATCHED_LOTAD,
+ SLOT_MACHINE_MATCHED_AZURILL,
+ SLOT_MACHINE_MATCHED_POWER,
+ SLOT_MACHINE_MATCHED_777_MIXED,
+ SLOT_MACHINE_MATCHED_777_RED,
+ SLOT_MACHINE_MATCHED_777_BLUE,
+ SLOT_MACHINE_MATCHED_NONE
+};
+
+struct SlotMachineEwramStruct {
+ /*0x00*/ u8 state;
+ /*0x01*/ u8 unk01;
+ /*0x02*/ u8 pikaPower;
+ /*0x03*/ u8 unk03;
+ /*0x04*/ u8 unk04;
+ /*0x05*/ u8 unk05;
+ /*0x06*/ u8 unk06;
+ /*0x07*/ u8 unk07;
+ /*0x08*/ u16 matchedSymbols;
+ /*0x0A*/ u8 unk0A;
+ /*0x0B*/ u8 unk0B;
+ /*0x0C*/ s16 coins;
+ /*0x0E*/ s16 payout;
+ /*0x10*/ s16 unk10;
+ /*0x12*/ s16 bet;
+ /*0x14*/ s16 unk14;
+ /*0x16*/ s16 unk16;
+ /*0x18*/ s16 unk18;
+ /*0x1A*/ s16 unk1A;
+ /*0x1C*/ s16 unk1C[3];
+ /*0x22*/ u16 unk22[3];
+ /*0x28*/ s16 reelPositions[3];
+ /*0x2E*/ s16 unk2E[3];
+ /*0x34*/ s16 unk34[3];
+ /*0x3A*/ u8 reelTasks[3];
+ /*0x3D*/ u8 unk3D;
+ /*0x3E*/ u8 unk3E;
+ /*0x3F*/ u8 unk3F;
+ /*0x40*/ u8 unk40;
+ /*0x41*/ u8 unk41;
+ /*0x42*/ u8 unk42;
+ /*0x43*/ u8 unk43;
+ /*0x44*/ u8 unk44[5];
+ /*0x49*/ u8 unk49[2];
+ /*0x49*/ u8 unk4B[3];
+ /*0x4E*/ u8 unk4E[2];
+ /*0x50*/ u8 unk50[2];
+ /*0x52*/ u8 unk52[2];
+ /*0x54*/ u8 unk54[4];
+ /*0x58*/ u16 win0h;
+ /*0x5a*/ u16 win0v;
+ /*0x5c*/ u16 winIn;
+ /*0x5e*/ u16 winOut;
+ /*0x60*/ u16 backupMapMusic;
+ /*0x64*/ MainCallback prevMainCb;
+};
+
+void PlaySlotMachine(u8 arg0, MainCallback cb);
void sub_8104DA4(void);
-u8 sub_8105BB4(u8, u8, s16);
+u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2);
#endif // GUARD_SLOT_MACHINE_H
diff --git a/include/sprite.h b/include/sprite.h
index 13c76c84b..b72c09989 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -120,10 +120,6 @@ union AffineAnimCmd
{.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}}
#define AFFINEANIMCMD_END \
{.type = AFFINEANIMCMDTYPE_END}
-#define AFFINEANIMCMD_LOOP(_count) \
- {.loop = {.type = AFFINEANIMCMDTYPE_LOOP, .count = _count}}
-#define AFFINEANIMCMD_JUMP(_target) \
- {.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}}
struct AffineAnimState
{
@@ -172,6 +168,8 @@ struct SpriteTemplate
void (*callback)(struct Sprite *);
};
+typedef void (*SpriteCallback)(struct Sprite *);
+
struct Sprite
{
/*0x00*/ struct OamData oam;
@@ -180,7 +178,7 @@ struct Sprite
/*0x10*/ const union AffineAnimCmd *const *affineAnims;
/*0x14*/ const struct SpriteTemplate *template;
/*0x18*/ const struct SubspriteTable *subspriteTables;
- /*0x1C*/ void (*callback)(struct Sprite *);
+ /*0x1C*/ SpriteCallback callback;
/*0x20*/ struct Coords16 pos1;
/*0x24*/ struct Coords16 pos2;
@@ -238,6 +236,8 @@ extern s16 gSpriteCoordOffsetX;
extern s16 gSpriteCoordOffsetY;
extern u8 gReservedSpritePaletteCount;
+extern u8 gOamLimit;
+
extern struct Sprite gSprites[];
void ResetSpriteData(void);
diff --git a/ld_script.txt b/ld_script.txt
index 62a7bf680..3d63bca17 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -278,9 +278,9 @@ SECTIONS {
src/battle/anim/energy_wave.o(.text);
src/battle/anim/water.o(.text);
asm/water.o(.text);
- asm/fire.o(.text);
+ src/battle/anim/fire.o(.text);
src/battle/anim/sunlight.o(.text);
- asm/fire_2.o(.text);
+ src/battle/anim/fire_2.o(.text);
src/battle/anim/heated_rock.o(.text);
src/battle/anim/wisp_orb.o(.text);
asm/wisp_fire.o(.text);
@@ -319,10 +319,7 @@ SECTIONS {
src/scene/cute_sketch.o(.text);
asm/cute_sketch.o(.text);
src/field/decoration.o(.text);
- asm/slot_machine.o(.text);
src/field/slot_machine.o(.text);
- asm/slot_machine.o(.text_8104D30)
- src/field/slot_machine.o(.text_b);
src/scene/contest_painting.o(.text);
src/battle/battle_ai.o(.text);
src/field/trader.o(.text);
@@ -433,7 +430,9 @@ 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/libs/libc.o(.text);
+ tools/agbcc/lib/libc.a:memcpy.o(.text);
+ tools/agbcc/lib/libc.a:memset.o(.text);
+ tools/agbcc/lib/libc.a:strcmp.o(.text);
} =0
.rodata :
@@ -552,7 +551,7 @@ SECTIONS {
src/field/region_map.o(.rodata);
data/cute_sketch.o(.rodata);
src/field/decoration.o(.rodata);
- data/slot_machine.o(.rodata);
+ src/field/slot_machine.o(.rodata);
src/scene/contest_painting.o(.rodata);
src/battle/battle_ai.o(.rodata);
src/field/trader.o(.rodata);
diff --git a/src/battle/anim/fire.c b/src/battle/anim/fire.c
new file mode 100644
index 000000000..253236805
--- /dev/null
+++ b/src/battle/anim/fire.c
@@ -0,0 +1,146 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+
+void sub_80D5038(struct Sprite *);
+void sub_80D50E8(struct Sprite *);
+
+void sub_80D4ED8(struct Sprite *sprite)
+{
+ sprite->data[0] = gBattleAnimArgs[0];
+ sprite->data[1] = 0x3C;
+ sprite->data[2] = 0x9;
+ sprite->data[3] = 0x1E;
+ sprite->data[4] = 0xFE00;
+
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+
+ sprite->callback = sub_8078174;
+ sub_8078174(sprite);
+}
+
+void sub_80D4F18(struct Sprite *sprite)
+{
+ sub_807867C(sprite, gBattleAnimArgs[0]);
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[3];
+
+ sprite->callback = sub_8078394;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+void sub_80D4F5C(struct Sprite *sprite)
+{
+ sub_8078650(sprite);
+
+ if (GetBankSide(gAnimBankAttacker))
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[2] = -gBattleAnimArgs[4];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[4];
+ }
+
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[4] = gBattleAnimArgs[3];
+ sprite->data[3] = gBattleAnimArgs[5];
+
+ sprite->callback = sub_80D5038;
+}
+
+void sub_80D4FCC(struct Sprite *sprite)
+{
+ if (GetBankSide(gAnimBankAttacker))
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[4];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[2] = -gBattleAnimArgs[4];
+ }
+
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[4] = gBattleAnimArgs[3];
+ sprite->data[3] = gBattleAnimArgs[5];
+
+ sprite->callback = sub_80D5038;
+}
+
+void sub_80D5038(struct Sprite *sprite)
+{
+ if (++sprite->data[0] < sprite->data[4])
+ {
+ sprite->pos2.x += sprite->data[2];
+ sprite->pos2.y += sprite->data[3];
+ }
+
+ if (sprite->data[0] == sprite->data[1])
+ move_anim_8074EE0(sprite);
+}
+
+void sub_80D5074(struct Sprite *sprite)
+{
+ sub_8078650(sprite);
+
+ if (GetBankSide(gAnimBankAttacker))
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->subpriority = 8;
+ }
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[2] = gBattleAnimArgs[4];
+ sprite->data[3] = gBattleAnimArgs[5];
+ sprite->data[4] = gBattleAnimArgs[6];
+ sprite->data[5] = 0;
+
+ sprite->callback = sub_80D50E8;
+}
+
+void sub_80D50E8(struct Sprite *sprite)
+{
+ if (sprite->data[3])
+ {
+ if(sprite->data[5] > 10000)
+ sprite->subpriority = 1;
+
+ sprite->pos2.x = Sin(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
+ sprite->pos2.y = Cos(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
+
+ sprite->data[0] += sprite->data[2];
+ sprite->data[5] += sprite->data[4];
+
+ if (sprite->data[0] > 255)
+ sprite->data[0] -= 256;
+ else if (sprite->data[0] < 0)
+ sprite->data[0] += 256;
+
+ sprite->data[3]--;
+ }
+ else
+ {
+ move_anim_8074EE0(sprite);
+ }
+} \ No newline at end of file
diff --git a/src/battle/anim/fire_2.c b/src/battle/anim/fire_2.c
new file mode 100644
index 000000000..6dc304232
--- /dev/null
+++ b/src/battle/anim/fire_2.c
@@ -0,0 +1,326 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "heated_rock.h"
+#include "rom_8077ABC.h"
+#include "task.h"
+#include "trig.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern struct SpriteTemplate gSpriteTemplate_83D96C4;
+extern s16 gHeatedRockCoords[7][2];
+
+void sub_80D5254(struct Sprite *);
+void sub_80D5348(struct Sprite *);
+void sub_80D52AC(struct Sprite *);
+void sub_80D5324(struct Sprite *);
+void sub_80D53F4(struct Sprite *);
+void sub_80D541C(struct Sprite *);
+void sub_80D54E0(u8 taskId);
+void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3);
+
+void sub_80D51A8(struct Sprite *sprite)
+{
+ if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget)
+ && (gAnimBankAttacker == GetBankByPlayerAI(2)
+ || gAnimBankAttacker == GetBankByPlayerAI(3)))
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->callback = sub_8079534;
+ sub_8079534(sprite);
+}
+
+struct Sprite *sub_80D5210(struct Sprite *sprite)
+{
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->callback = sub_8079534;
+ return sprite;
+}
+
+void sub_80D522C(struct Sprite *sprite)
+{
+ sub_80787B0(sprite, 1);
+
+ sprite->data[7] = gBattleAnimArgs[2];
+ sprite->data[0] = 0;
+
+ sprite->callback = sub_80D5254;
+}
+
+void sub_80D5254(struct Sprite *sprite)
+{
+ sub_80D5348(sprite);
+
+ if (++sprite->data[0] == 0x12)
+ {
+ sprite->data[0] = 0x19;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+
+ obj_translate_based_on_private_1_2_3_4(sprite);
+
+ sprite->callback = sub_80D52AC;
+ }
+}
+
+void sub_80D52AC(struct Sprite *sprite)
+{
+ if (sub_8078B5C(sprite))
+ {
+ sprite->data[0] = 0;
+
+ sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3);
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+
+ sprite->callback = sub_80D5324;
+ sub_80D5324(sprite);
+ }
+ else
+ {
+ sprite->pos2.x += Sin(sprite->data[7], 28);
+ sprite->pos2.y += Cos(sprite->data[7], 28);
+
+ sprite->data[7] = (sprite->data[7] + 20) & 0xFF;
+ }
+}
+
+void sub_80D5324(struct Sprite *sprite)
+{
+ sub_80D5348(sprite);
+
+ if (++sprite->data[0] == 0x1F)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D5348(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[7], 28);
+ sprite->pos2.y = Cos(sprite->data[7], 28);
+
+ sprite->data[7] = (sprite->data[7] + 20) & 0xFF;
+}
+
+void sub_80D5374(struct Sprite *sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[2] = gBattleAnimArgs[4];
+
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+
+ sprite->callback = sub_8078364;
+}
+
+void sub_80D53B4(struct Sprite *sprite)
+{
+ sub_80787B0(sprite, 1);
+
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[0] = gBattleAnimArgs[3];
+
+ sprite->invisible = TRUE;
+ sprite->callback = sub_80782D8;
+
+ StoreSpriteCallbackInData(sprite, sub_80D53F4);
+}
+
+void sub_80D53F4(struct Sprite *sprite)
+{
+ sprite->invisible = FALSE;
+
+ sprite->data[0] = sprite->data[1];
+ sprite->data[1] = 0;
+
+ sprite->callback = sub_80D541C;
+ sub_80D541C(sprite);
+}
+
+void sub_80D541C(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
+ sprite->pos2.y = Cos(sprite->data[1], sprite->data[2] >> 8);
+
+ sprite->data[1] = (sprite->data[1] + 10) & 0xFF;
+ sprite->data[2] += 0xD0;
+
+ if (--sprite->data[0] == -1)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D5470(u8 taskId) // initialize animation task for Move_ERUPTION?
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[15] = GetAnimBankSpriteId(0);
+
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[4] = gSprites[task->data[15]].pos1.y;
+ task->data[5] = GetBankSide(gAnimBankAttacker);
+ task->data[6] = 0;
+
+ sub_8078E70(task->data[15], 0);
+
+ task->func = sub_80D54E0;
+}
+
+void sub_80D54E0(u8 taskId) // animate Move_ERUPTION?
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_8079C08(task, task->data[15], 0x100, 0x100, 0xE0, 0x200, 0x20);
+
+ task->data[0]++;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+
+ if (++task->data[2] & 0x1)
+ gSprites[task->data[15]].pos2.x = 3;
+ else
+ gSprites[task->data[15]].pos2.x = -3;
+ }
+
+ if (task->data[5])
+ {
+ if (++task->data[3] > 4)
+ {
+ task->data[3] = 0;
+ gSprites[task->data[15]].pos1.y++;
+ }
+ }
+
+ if(!sub_8079C74(task))
+ {
+ sub_8079A64(task->data[15]);
+ gSprites[task->data[15]].pos2.x = 0;
+
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (++task->data[1] > 4)
+ {
+ if (task->data[5])
+ sub_8079C08(task, task->data[15], 0xE0, 0x200, 0x180, 0xF0, 0x6);
+ else
+ sub_8079C08(task, task->data[15], 0xE0, 0x200, 0x180, 0xC0, 0x6);
+
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ if (!sub_8079C74(task))
+ {
+ sub_80D57C4(task->data[15], taskId, 6);
+
+ task->data[0]++;
+ }
+ break;
+ case 4:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+
+ if (++task->data[2] & 1)
+ gSprites[task->data[15]].pos2.y += 3;
+ else
+ gSprites[task->data[15]].pos2.y -= 3;
+ }
+
+ if (++task->data[3] > 0x18)
+ {
+ if (task->data[5])
+ sub_8079C08(task, task->data[15], 0x180, 0xF0, 0x100, 0x100, 0x8);
+ else
+ sub_8079C08(task, task->data[15], 0x180, 0xC0, 0x100, 0x100, 0x8);
+
+ if (task->data[2] & 1)
+ gSprites[task->data[15]].pos2.y -= 3;
+
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 5:
+ if (task->data[5])
+ gSprites[task->data[15]].pos1.y--;
+
+ if (!sub_8079C74(task))
+ {
+ gSprites[task->data[15]].pos1.y = task->data[4];
+ sub_8078F40(task->data[15]);
+
+ task->data[2] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 6:
+ if (!task->data[6])
+ DestroyAnimVisualTask(taskId);
+
+ break;
+ default:
+ }
+}
+
+void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3)
+{
+ u16 i, j;
+ s8 sign;
+
+ u16 y = sub_80D5940(spriteId);
+ u16 x = gSprites[spriteId].pos1.x;
+
+ if(!GetBankSide(gAnimBankAttacker))
+ {
+ x -= 0xC;
+ sign = 1;
+ }
+ else
+ {
+ x += 0x10;
+ sign = -1;
+ }
+
+ for (i = 0, j = 0; i <= 6; i++)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83D96C4, x, y, 2);
+
+ if (spriteId != 0x40)
+ {
+ gSprites[spriteId].oam.tileNum += j * 4 + 0x40;
+
+ if (++j >= 5)
+ j = 0;
+
+ sub_80D5994(&gSprites[spriteId], gHeatedRockCoords[i][0] * sign, gHeatedRockCoords[i][1]);
+ gSprites[spriteId].data[6] = taskId;
+ gSprites[spriteId].data[7] = a3;
+
+ gTasks[taskId].data[a3]++;
+ }
+ }
+} \ No newline at end of file
diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c
index 89ec68b0a..a524790b4 100644
--- a/src/field/slot_machine.c
+++ b/src/field/slot_machine.c
@@ -1,49 +1,2869 @@
#include "global.h"
+#include "constants/songs.h"
+#include "strings2.h"
+#include "overworld.h"
+#include "menu_cursor.h"
+#include "field_effect.h"
+#include "random.h"
+#include "sound.h"
+#include "main.h"
#include "slot_machine.h"
#include "decompress.h"
+#include "trig.h"
+#include "graphics.h"
#include "palette.h"
-#include "task.h"
+#include "util.h"
+#include "text.h"
+#include "menu.h"
#include "ewram.h"
-struct UnkStruct2000000 {
- /*0x00*/ u8 filler00[61];
- /*0x3D*/ u8 unk3D;
-};
-
struct UnkStruct1 {
/*0x00*/ u8 unk00;
/*0x01*/ u8 unk01;
/*0x02*/ s16 unk02;
};
-extern struct UnkStruct1 *gUnknown_083ED048[];
-extern const u16 gPalette_83EDE24[];
-
-extern const u8 gSlotMachine_Gfx[];
#if ENGLISH
#define SLOTMACHINE_GFX_TILES 233
#elif GERMAN
#define SLOTMACHINE_GFX_TILES 236
#endif
-extern const u16 gUnknown_08E95A18[];
-extern u16 gUnknown_08E95AB8[];
-extern u16 gUnknown_08E95FB8[];
+static void CB2_SlotMachineSetup(void);
+static void CB2_SlotMachineLoop(void);
+static void PlaySlotMachine_Internal(u8 arg0, MainCallback cb);
+static void SlotMachineDummyTask(u8 taskId);
+static void SlotMachineSetup_0_0(void);
+static void SlotMachineSetup_6_2(void);
+static void SlotMachineSetup_1_0(void);
+static void SlotMachineSetup_2_0(void);
+static void SlotMachineSetup_2_1(void);
+static void SlotMachineSetup_0_1(void);
+static void SlotMachineSetup_3_0(void);
+static void SlotMachineSetup_4_0(void);
+static void SlotMachineSetup_5_0(void);
+static void SlotMachineSetup_6_0(void);
+static void SlotMachineSetup_6_1(void);
+static void sub_8101D04(void);
+static void sub_8101D24(u8 taskId);
+static bool8 sub_8101D5C(struct Task *task);
+static bool8 sub_8101D8C(struct Task *task);
+static bool8 sub_8101DB0(struct Task *task);
+static bool8 sub_8101DF4(struct Task *task);
+static bool8 sub_8101E10(struct Task *task);
+static bool8 sub_8101E3C(struct Task *task);
+static bool8 sub_8101F44(struct Task *task);
+static bool8 sub_8101F60(struct Task *task);
+static bool8 sub_8101F88(struct Task *task);
+static bool8 sub_8101FA4(struct Task *task);
+static bool8 sub_8102008(struct Task *task);
+static bool8 sub_8102034(struct Task *task);
+static bool8 sub_8102058(struct Task *task);
+static bool8 sub_8102090(struct Task *task);
+static bool8 sub_81020C8(struct Task *task);
+static bool8 sub_81021E0(struct Task *task);
+static bool8 sub_81021FC(struct Task *task);
+static bool8 sub_8102264(struct Task *task);
+static bool8 sub_81022A0(struct Task *task);
+static bool8 sub_81022CC(struct Task *task);
+static bool8 sub_81022F0(struct Task *task);
+static bool8 sub_8102318(struct Task *task);
+static bool8 sub_8102344(struct Task *task);
+static bool8 sub_810239C(struct Task *task);
+static bool8 sub_81023B8(struct Task *task);
+static bool8 sub_81023E0(struct Task *task);
+static bool8 sub_81023FC(struct Task *task);
+static bool8 sub_8102424(struct Task *task);
+static bool8 sub_8102460(struct Task *task);
+static void sub_8102484(void);
+static void sub_81024F0(void);
+static bool8 sub_8102540(void);
+static u8 sub_8102578(void);
+static u16 dp15_jump_random_unknown(void);
+static u8 sub_81025BC(void);
+static void CheckMatch(void);
+static void CheckMatch_CenterRow(void);
+static void CheckMatch_TopAndBottom(void);
+static void CheckMatch_Diagonals(void);
+static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3);
+static void sub_8102A24(void);
+static void sub_8102A64(u8 taskId);
+static bool8 sub_8102A44(void);
+static bool8 sub_8102A9C(struct Task *task);
+static bool8 sub_8102AD0(struct Task *task);
+static bool8 sub_8102B80(struct Task *task);
+static u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y);
+static void sub_8102DA8(void);
+static void sub_8102DEC(u8 a0);
+static void sub_8102E1C(u8 a0);
+static bool8 sub_8102E40(u8 a0);
+static void sub_8102E68(u8 taskId);
+static bool8 sub_8102EA0(struct Task *task);
+static bool8 sub_8102EA4(struct Task *task);
+static bool8 sub_8102EC0(struct Task *task);
+static bool8 sub_8102F4C(struct Task *task);
+static bool8 sub_8103008(struct Task *task);
+static bool8 sub_810305C(void);
+static bool8 sub_8103154(u8 a0, u8 a1);
+static bool8 sub_81031B4(u8 a0, u8 a1);
+static bool8 sub_81032C0(void);
+static bool8 sub_81032E8(void);
+static bool8 sub_810333C(void);
+static bool8 sub_81033DC(void);
+static bool8 sub_810341C(u8 a0);
+static bool8 sub_810347C(u8 a0);
+static void sub_81034F4(void);
+static void sub_8103540(void);
+static void sub_8103564(void);
+static void j5_08111E84(void);
+static void sub_8103668(void);
+static void sub_810380C(void);
+static void sub_8103830(void);
+static void sub_8103910(void);
+static void sub_8103A78(void);
+static void sub_8103C14(u8 a0);
+static void sub_8103C48(u8 taskId);
+static void sub_8103D50(u8 a0);
+static void sub_8103C78(struct Task *task, u8 taskId);
+static void sub_8103CAC(struct Task *task, u8 taskId);
+static void sub_8103CC8(struct Task *task, u8 taskId);
+static void sub_8103D8C(u8 a0);
+static void sub_8103DC8(void);
+static void sub_8103E04(u8 a0);
+static bool8 sub_8103E38(void);
+static bool8 sub_8103E7C(void);
+static bool8 sub_8103EAC(u8 spriteId);
+static void sub_8103EE4(struct Sprite *sprite);
+static void sub_8103F70(void);
+static bool8 sub_8103FA0(void);
+static void sub_8103FE8(u8 taskId);
+static void sub_8104048(void);
+static void sub_8104064(u8 pikaPower);
+static bool8 sub_81040C8(void);
+static void sub_81040E8(u8 taskId);
+static void nullsub_68(struct Task *task);
+static void sub_810411C(struct Task *task);
+static void sub_8104144(struct Task *task);
+static void sub_81041AC(struct Task *task);
+static void sub_810421C(struct Task *task);
+static void sub_810423C(u8 pikaPower);
+static void sub_810430C(void);
+static bool8 sub_810432C(void);
+static void sub_810434C(u8 taskId);
+static void sub_810437C(struct Task *task);
+static void sub_81043EC(struct Task *task);
+static void sub_8104468(struct Task *task);
+static void sub_8104498(struct Task *task);
+static void sub_8104548(struct Task *task);
+static void sub_8104598(struct Task *task);
+static void sub_81045CC(struct Task *task);
+static void sub_810463C(struct Task *task);
+static void sub_81046C0(struct Task *task);
+static void sub_8104764(struct Task *task);
+static void sub_8104794(struct Task *task);
+static void sub_81047EC(struct Task *task);
+static void sub_8104860(struct Task *task);
+static void sub_81048A8(struct Task *task);
+static void sub_81048CC(struct Task *task);
+static void sub_8104940(struct Task *task);
+static void sub_81049C8(struct Task *task);
+static void sub_81049F8(struct Task *task);
+static void sub_8104A40(s16 a0, s16 a1);
+static void sub_8104A88(s16 a0);
+static void sub_8104AB8(u8 a0);
+static bool8 sub_8104AEC(void);
+static void sub_8104B0C(u8 taskId);
+static void sub_8104B3C(struct Task *task);
+static void sub_8104B60(struct Task *task);
+static void sub_8104B80(struct Task *task);
+static void sub_8104BC8(struct Task *task);
+static void sub_8104BFC(struct Task *task);
+static void sub_8104C44(struct Task *task);
+static void sub_8104C5C(void);
+static void sub_8104CAC(u8 arg0);
+static bool8 sub_8104E18(void);
+static void nullsub_69(struct Task *task);
+static void sub_8104E74(u8 taskId);
+static void sub_8104EA8(void);
+static void sub_8104F8C(void);
+static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3);
+static void sub_81050C4(void);
+static void sub_8105100(void);
+static void sub_810514C(void);
+static void sub_81051C0(void);
+static void sub_8105284(void);
+static void sub_81052EC(void);
+static void sub_81053A0(void);
+static void sub_810545C(void);
+static void sub_81054B8(void);
+static void sub_8105524(void);
+static void sub_8105554(void);
+static void sub_8105578(void);
+static void sub_8105688(s16 a0);
+static void sub_81056C0(void);
+static void sub_81056F0(void);
+static void sub_81057E8(s16 a0);
+static void sub_8105804(void);
+static void sub_8105854(void);
+static void sub_81058A0(void);
+static void sub_81058C4(void);
+static void sub_81059B8(void);
+static void sub_81059E8(void);
+static bool8 sub_8105ACC(void);
+static void sub_8105AEC(void);
+static u8 sub_8105B1C(s16 x, s16 y);
+static void sub_8105B88(u8 spriteId);
+static u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4);
+static void sub_81063C0(void);
+static void sub_8106404(void);
+static void sub_8106448(void);
+static void sub_81064B8(void);
+static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
+static void sub_81065DC(void);
+
+static const struct UnkStruct1 *const gUnknown_083ED048[];
+static const u16 gPalette_83EDE24[];
+static const u8 gUnknown_083ECD04[][3];
+static const u8 gUnknown_083ECE3A[];
+static const u16 gUnknown_083ECE42[];
+static const u16 gUnknown_083ECE48[];
+
+void PlaySlotMachine(u8 arg0, MainCallback cb)
+{
+ PlaySlotMachine_Internal(arg0, cb);
+ SetMainCallback2(CB2_SlotMachineSetup);
+}
+
+static void CB2_SlotMachineSetup(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SlotMachineSetup_0_0();
+ SlotMachineSetup_0_1();
+ gMain.state++;
+ break;
+ case 1:
+ SlotMachineSetup_1_0();
+ gMain.state++;
+ break;
+ case 2:
+ SlotMachineSetup_2_0();
+ SlotMachineSetup_2_1();
+ gMain.state++;
+ break;
+ case 3:
+ SlotMachineSetup_3_0();
+ gMain.state++;
+ break;
+ case 4:
+ SlotMachineSetup_4_0();
+ gMain.state++;
+ break;
+ case 5:
+ SlotMachineSetup_5_0();
+ gMain.state++;
+ break;
+ case 6:
+ SlotMachineSetup_6_0();
+ SlotMachineSetup_6_1();
+ SlotMachineSetup_6_2();
+ SetMainCallback2(CB2_SlotMachineLoop);
+ break;
+ }
+}
+
+static void CB2_SlotMachineLoop(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void SlotMachine_VBlankCallback(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ REG_WIN0H = eSlotMachine->win0h;
+ REG_WIN0V = eSlotMachine->win0v;
+ REG_WININ = eSlotMachine->winIn;
+ REG_WINOUT = eSlotMachine->winOut;
+}
+
+static void PlaySlotMachine_Internal(u8 arg0, MainCallback cb)
+{
+ struct Task *task = gTasks + CreateTask(SlotMachineDummyTask, 0xFF);
+ task->data[0] = arg0;
+ StoreWordInTwoHalfwords(task->data + 1, (intptr_t)cb);
+}
+
+static void sub_81019EC(void)
+{
+ struct Task *task = gTasks + FindTaskIdByFunc(SlotMachineDummyTask);
+ eSlotMachine->unk01 = task->data[0];
+ LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&eSlotMachine->prevMainCb);
+}
+
+static void SlotMachineDummyTask(u8 taskId)
+{
+}
+
+static void SlotMachineSetup_0_0(void)
+{
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+ REG_DISPCNT = 0;
+}
+
+static void SlotMachineSetup_6_2(void)
+{
+ u16 imeBak;
+ SetVBlankCallback(SlotMachine_VBlankCallback);
+ imeBak = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = imeBak;
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+ REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
+}
+
+static void SlotMachineSetup_1_0(void)
+{
+ DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000);
+}
+
+static void SlotMachineSetup_2_0(void)
+{
+ DmaClear16(3, (u16 *)OAM, OAM_SIZE);
+}
+
+static void SlotMachineSetup_2_1(void)
+{
+ REG_BG0CNT = 0;
+ REG_BG1CNT = 0;
+ REG_BG2CNT = 0;
+ REG_BG3CNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_SCREENBASE(31) | BGCNT_CHARBASE(2);
+ REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(28);
+ REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(29);
+ REG_BG3CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(30);
+ REG_WININ = 0x3f;
+ REG_WINOUT = 0x3f;
+ REG_BLDCNT = BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_OBJ;
+ REG_BLDALPHA = 0x809;
+}
+
+static const s16 gUnknown_083ECCF8[][2];
+
+static void SlotMachineSetup_0_1(void)
+{
+ u8 i;
+
+ sub_81019EC();
+ eSlotMachine->state = 0;
+ eSlotMachine->pikaPower = 0;
+ eSlotMachine->unk03 = Random() & 1;
+ eSlotMachine->unk04 = 0;
+ eSlotMachine->matchedSymbols = 0;
+ eSlotMachine->unk0A = 0;
+ eSlotMachine->unk0B = 0;
+ eSlotMachine->coins = gSaveBlock1.coins;
+ eSlotMachine->payout = 0;
+ eSlotMachine->unk10 = 0;
+ eSlotMachine->bet = 0;
+ eSlotMachine->unk18 = 0;
+ eSlotMachine->unk1A = 8;
+ eSlotMachine->win0h = 0xf0;
+ eSlotMachine->win0v = 0xa0;
+ eSlotMachine->winIn = 0x3f;
+ eSlotMachine->winOut = 0x3f;
+ eSlotMachine->backupMapMusic = GetCurrentMapMusic();
+ for (i = 0; i < 3; i++)
+ {
+ eSlotMachine->unk22[i] = 0;
+ eSlotMachine->reelPositions[i] = gUnknown_083ECCF8[i][eSlotMachine->unk03] % 21;
+ eSlotMachine->unk1C[i] = 0x1f8 - eSlotMachine->reelPositions[i] * 24;
+ eSlotMachine->unk1C[i] %= 0x1f8;
+ }
+}
+
+static void SlotMachineSetup_3_0(void)
+{
+ SetUpWindowConfig(&gWindowConfig_81E7128);
+ InitMenuWindow(&gWindowConfig_81E7128);
+}
+
+static void SlotMachineSetup_4_0(void)
+{
+ ResetPaletteFade();
+ ResetSpriteData();
+ gOamLimit = 128;
+ FreeAllSpritePalettes();
+ ResetTasks();
+}
+
+static void SlotMachineSetup_5_0(void)
+{
+ sub_8106448();
+ sub_81064B8();
+ sub_81063C0();
+}
+
+static void SlotMachineSetup_6_0(void)
+{
+ sub_8104EA8();
+ sub_8104F8C();
+ sub_8103DC8();
+ sub_81050C4();
+}
+
+static void SlotMachineSetup_6_1(void)
+{
+ sub_8104048();
+ sub_8102DA8();
+ sub_8104C5C();
+ sub_8101D04();
+}
+
+static void sub_8101D04(void)
+{
+ sub_8101D24(CreateTask(sub_8101D24, 0));
+}
+
+static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = {
+ sub_8101D5C,
+ sub_8101D8C,
+ sub_8101DB0,
+ sub_8101DF4,
+ sub_8101E10,
+ sub_8101E3C,
+ sub_8101F44,
+ sub_8101F60,
+ sub_8101F88,
+ sub_8101FA4,
+ sub_8102008,
+ sub_8102034,
+ sub_8102058,
+ sub_8102090,
+ sub_81020C8,
+ sub_81021E0,
+ sub_81021FC,
+ sub_8102264,
+ sub_81022A0,
+ sub_81022CC,
+ sub_81022F0,
+ sub_8102318,
+ sub_8102344,
+ sub_810239C,
+ sub_81023B8,
+ sub_81023E0,
+ sub_81023FC,
+ sub_8102424,
+ sub_8102460
+};
+
+static void sub_8101D24(u8 taskId)
+{
+ while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId));
+}
+
+static bool8 sub_8101D5C(struct Task *task)
+{
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ sub_810423C(eSlotMachine->pikaPower);
+ eSlotMachine->state++;
+ return FALSE;
+}
+
+static bool8 sub_8101D8C(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ {
+ eSlotMachine->state++;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8101DB0(struct Task *task)
+{
+ eSlotMachine->payout = 0;
+ eSlotMachine->bet = 0;
+ eSlotMachine->unk18 = 0;
+ eSlotMachine->unk04 &= 0xc0;
+ eSlotMachine->state = 4;
+ if (eSlotMachine->coins <= 0)
+ {
+ eSlotMachine->state = 25;
+ }
+ else if (eSlotMachine->unk0A)
+ {
+ eSlotMachine->state = 3;
+ sub_8104CAC(4);
+ }
+ return TRUE;
+}
+
+static bool8 sub_8101DF4(struct Task *task)
+{
+ if (sub_8104E18())
+ {
+ eSlotMachine->state = 4;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8101E10(struct Task *task)
+{
+ sub_8104CAC(0);
+ eSlotMachine->state = 5;
+ if (eSlotMachine->coins >= 9999)
+ {
+ eSlotMachine->state = 23;
+ }
+ return TRUE;
+}
+
+static bool8 sub_8101E3C(struct Task *task)
+{
+ s16 i;
+
+ if (gMain.newKeys & SELECT_BUTTON)
+ {
+ sub_8104AB8(0);
+ eSlotMachine->state = 8;
+ }
+ else if (gMain.newKeys & R_BUTTON)
+ {
+ if (eSlotMachine->coins - (3 - eSlotMachine->bet) >= 0)
+ {
+ for (i = eSlotMachine->bet; i < 3; i++)
+ {
+ sub_8103D50(i);
+ }
+ eSlotMachine->coins -= (3 - eSlotMachine->bet);
+ eSlotMachine->bet = 3;
+ eSlotMachine->state = 9;
+ PlaySE(SE_REGI);
+ }
+ else
+ {
+ eSlotMachine->state = 6;
+ }
+ }
+ else
+ {
+ if (gMain.newKeys & DPAD_DOWN && eSlotMachine->coins != 0)
+ {
+ PlaySE(SE_REGI);
+ sub_8103D50(eSlotMachine->bet);
+ eSlotMachine->coins--;
+ eSlotMachine->bet++;
+ }
+ if (eSlotMachine->bet >= 3 || (eSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON))
+ {
+ eSlotMachine->state = 9;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ eSlotMachine->state = 21;
+ }
+ }
+ return FALSE;
+}
+
+static void sub_8101F2C(const u8 *str)
+{
+ MenuDisplayMessageBox();
+ MenuPrint(str, 2, 15);
+}
+
+static bool8 sub_8101F44(struct Task *task)
+{
+ sub_8101F2C(gOtherText_DontHaveThreeCoins);
+ eSlotMachine->state = 7;
+ return FALSE;
+}
+
+static bool8 sub_8101F60(struct Task *task)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ MenuZeroFillScreen();
+ eSlotMachine->state = 5;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8101F88(struct Task *task)
+{
+ if (sub_8104AEC())
+ {
+ eSlotMachine->state = 5;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8101FA4(struct Task *task)
+{
+ sub_8102484();
+ sub_8104DA4();
+ sub_8102DEC(0);
+ sub_8102DEC(1);
+ sub_8102DEC(2);
+ task->data[0] = 0;
+ if (eSlotMachine->unk04 & 0x20)
+ {
+ sub_810430C();
+ eSlotMachine->state = 10;
+ }
+ else
+ {
+ sub_8104CAC(1);
+ eSlotMachine->state = 11;
+ }
+ eSlotMachine->unk1A = 8;
+ if (eSlotMachine->unk0A)
+ {
+ eSlotMachine->unk1A = dp15_jump_random_unknown();
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102008(struct Task *task)
+{
+ if (sub_810432C())
+ {
+ sub_8104CAC(1);
+ eSlotMachine->unk04 &= 0xDF;
+ eSlotMachine->state = 11;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102034(struct Task *task)
+{
+ if (++task->data[0] >= 30)
+ {
+ sub_81024F0();
+ eSlotMachine->state = 12;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102058(struct Task *task)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_JYUNI);
+ sub_8102E1C(eSlotMachine->unk18);
+ sub_8103C14(eSlotMachine->unk18);
+ eSlotMachine->state = 13;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102090(struct Task *task)
+{
+ if (!sub_8102E40(eSlotMachine->unk18))
+ {
+ eSlotMachine->unk18++;
+ eSlotMachine->state = 12;
+ if (eSlotMachine->unk18 > 2)
+ {
+ eSlotMachine->state = 14;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_81020C8(struct Task *task)
+{
+ eSlotMachine->unk04 &= 0xc0;
+ CheckMatch();
+ if (eSlotMachine->unk0A)
+ {
+ eSlotMachine->unk0A--;
+ eSlotMachine->unk0B++;
+ }
+ if (eSlotMachine->matchedSymbols)
+ {
+ eSlotMachine->state = 15;
+ sub_8102A24();
+ sub_8103F70();
+ if ((eSlotMachine->unk10 -= eSlotMachine->payout) < 0)
+ {
+ eSlotMachine->unk10 = 0;
+ }
+ if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ {
+ PlayFanfare(BGM_ME_B_BIG);
+ sub_8104CAC(6);
+ }
+ else if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_MIXED))
+ {
+ PlayFanfare(BGM_ME_B_BIG);
+ sub_8104CAC(5);
+ }
+ else
+ {
+ PlayFanfare(BGM_ME_B_SMALL);
+ sub_8104CAC(2);
+ }
+ if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_MIXED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ {
+ eSlotMachine->unk04 &= 0x3f;
+ if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ {
+ eSlotMachine->unk0A = 0;
+ eSlotMachine->unk0B = 0;
+ eSlotMachine->unk03 = 0;
+ if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE))
+ {
+ eSlotMachine->unk03 = 1;
+ }
+ }
+ }
+ if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && eSlotMachine->pikaPower < 16)
+ {
+ eSlotMachine->pikaPower++;
+ sub_8104064(eSlotMachine->pikaPower);
+ }
+ }
+ else
+ {
+ sub_8104CAC(3);
+ eSlotMachine->state = 20;
+ if ((eSlotMachine->unk10 += eSlotMachine->bet) > 9999)
+ {
+ eSlotMachine->unk10 = 9999;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_81021E0(struct Task *task)
+{
+ if (sub_8102A44())
+ {
+ eSlotMachine->state = 16;
+ }
+ return FALSE;
+}
+
+static bool8 sub_81021FC(struct Task *task)
+{
+ if (sub_8103FA0())
+ {
+ eSlotMachine->state = 19;
+ if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_RED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE)))
+ {
+ IncrementGameStat(GAME_STAT_SLOT_JACKPOTS);
+ }
+ if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ {
+ eSlotMachine->unk18 = 0;
+ eSlotMachine->state = 9;
+ }
+ if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER))
+ {
+ eSlotMachine->state = 17;
+ }
+ if (eSlotMachine->unk0A && eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ {
+ sub_8104CAC(4);
+ eSlotMachine->state = 18;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102264(struct Task *task)
+{
+ if (!sub_81040C8())
+ {
+ eSlotMachine->state = 19;
+ if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ {
+ eSlotMachine->state = 9;
+ if (eSlotMachine->unk0A)
+ {
+ sub_8104CAC(4);
+ eSlotMachine->state = 18;
+ }
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_81022A0(struct Task *task)
+{
+ if (sub_8104E18())
+ {
+ eSlotMachine->state = 19;
+ if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ {
+ eSlotMachine->state = 9;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_81022CC(struct Task *task)
+{
+ sub_8103D8C(0);
+ sub_8103D8C(1);
+ sub_8103D8C(2);
+ eSlotMachine->state = 2;
+ return FALSE;
+}
+
+static bool8 sub_81022F0(struct Task *task)
+{
+ if (++task->data[1] > 64)
+ {
+ task->data[1] = 0;
+ eSlotMachine->state = 19;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102318(struct Task *task)
+{
+ sub_8101F2C(gOtherText_QuitGamePrompt);
+ DisplayYesNoMenu(21, 7, 1);
+ sub_814AB84();
+ eSlotMachine->state = 22;
+ return FALSE;
+}
+
+static bool8 sub_8102344(struct Task *task)
+{
+ s8 input = ProcessMenuInputNoWrap_();
+ if (input == 0)
+ {
+ MenuZeroFillScreen();
+ sub_8103D8C(0);
+ sub_8103D8C(1);
+ sub_8103D8C(2);
+ eSlotMachine->coins += eSlotMachine->bet;
+ eSlotMachine->state = 27;
+ }
+ else if (input == 1 || input == -1)
+ {
+ MenuZeroFillScreen();
+ eSlotMachine->state = 5;
+ }
+ return FALSE;
+}
+
+static bool8 sub_810239C(struct Task *task)
+{
+ sub_8101F2C(gOtherText_MaxCoins);
+ eSlotMachine->state = 24;
+ return FALSE;
+}
+
+static bool8 sub_81023B8(struct Task *task)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ MenuZeroFillScreen();
+ eSlotMachine->state = 5;
+ }
+ return FALSE;
+}
+
+static bool8 sub_81023E0(struct Task *task)
+{
+ sub_8101F2C(gOtherText_OutOfCoins);
+ eSlotMachine->state = 26;
+ return FALSE;
+}
+
+static bool8 sub_81023FC(struct Task *task)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ MenuZeroFillScreen();
+ eSlotMachine->state = 27;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102424(struct Task *task)
+{
+ gSaveBlock1.coins = eSlotMachine->coins;
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ eSlotMachine->state++;
+ return FALSE;
+}
+
+static bool8 sub_8102460(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(eSlotMachine->prevMainCb);
+ }
+ return FALSE;
+}
+
+static void sub_8102484(void)
+{
+ u8 r3;
+
+ if (eSlotMachine->unk0A == 0 && !(eSlotMachine->unk04 & 0xc0))
+ {
+ if (sub_8102540())
+ {
+ r3 = sub_8102578();
+ if (r3 != 3)
+ {
+ eSlotMachine->unk04 |= gUnknown_083ECE42[r3];
+ if (r3 != 1)
+ {
+ return;
+ }
+ }
+ }
+ r3 = sub_81025BC();
+ if (r3 != 5)
+ {
+ eSlotMachine->unk04 |= gUnknown_083ECE48[r3];
+ }
+ }
+}
+
+static void sub_81024F0(void)
+{
+ eSlotMachine->unk06 = 0;
+ if (eSlotMachine->unk04)
+ {
+ eSlotMachine->unk06 = 1;
+ }
+}
+
+static u8 sub_810250C(u8 a0)
+{
+ u8 i;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (a0 & 1)
+ {
+ return gUnknown_083ECE3A[i];
+ }
+ a0 >>= 1;
+ }
+ return 0;
+}
+
+static bool8 sub_8102540(void)
+{
+ u8 rval = Random();
+ if (gUnknown_083ECD04[eSlotMachine->unk01][eSlotMachine->bet - 1] > rval)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static const u8 gUnknown_083ECD16[][6];
+
+static u8 sub_8102578(void)
+{
+ s16 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ s16 rval = Random() & 0xff;
+ s16 value = gUnknown_083ECD16[i][eSlotMachine->unk01];
+ if (value > rval)
+ {
+ break;
+ }
+ }
+ return i;
+}
+
+static const u8 gUnknown_083ECD28[][6];
+
+static u8 sub_81025BC(void)
+{
+ s16 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ s16 rval = Random() & 0xff;
+ s16 r3 = gUnknown_083ECD28[i][eSlotMachine->unk01];
+ if (i == 0 && eSlotMachine->unk03 == 1)
+ {
+ r3 += 10;
+ if (r3 > 0x100)
+ {
+ r3 = 0x100;
+ }
+ }
+ else if (i == 4 && eSlotMachine->unk03 == 1)
+ {
+ r3 -= 10;
+ if (r3 < 0)
+ {
+ r3 = 0;
+ }
+ }
+ if (r3 > rval)
+ {
+ break;
+ }
+ }
+ return i;
+}
+
+static const u8 gUnknown_083ECD46[][17];
+static const u8 gUnknown_083ECDAC[][17];
+
+static u8 sub_810264C(u8 a0)
+{
+ if (eSlotMachine->unk03 == 0)
+ {
+ return gUnknown_083ECD46[a0][eSlotMachine->pikaPower];
+ }
+ return gUnknown_083ECDAC[a0][eSlotMachine->pikaPower];
+}
+
+static void sub_8102680(void)
+{
+ u8 rval;
+ s16 i;
+
+ eSlotMachine->unk05 = 0;
+ rval = Random();
+ if (rval < sub_810264C(0))
+ {
+ return;
+ }
+ for (i = 5; i > 0; i--)
+ {
+ rval = Random();
+ if (rval < sub_810264C(i))
+ {
+ break;
+ }
+ }
+ eSlotMachine->unk05 = i;
+}
+
+static const u16 gUnknown_083ECE12[];
+
+static bool8 sub_81026DC(u16 a0)
+{
+ u16 rval = Random() & 0xff;
+ if (rval < gUnknown_083ECE12[a0])
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static const u16 gUnknown_083ECE1C[][2];
+static const u16 gUnknown_083ECE30[];
+
+static u16 dp15_jump_random_unknown(void)
+{
+ u8 r4 = 0;
+ u8 rval;
+ u8 value;
+ if (eSlotMachine->unk10 >= 300)
+ {
+ r4 = 4;
+ }
+ else if (eSlotMachine->unk10 >= 250)
+ {
+ r4 = 3;
+ }
+ else if (eSlotMachine->unk10 >= 200)
+ {
+ r4 = 2;
+ }
+ else if (eSlotMachine->unk10 >= 150)
+ {
+ r4 = 1;
+ }
+ rval = Random() % 100;
+ value = gUnknown_083ECE1C[r4][0];
+ if (rval < value)
+ {
+ return 4;
+ }
+ rval = Random() % 100;
+ value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[eSlotMachine->unk0B];
+ if (rval < value)
+ {
+ return 2;
+ }
+ return 8;
+}
+
+static void CheckMatch(void)
+{
+ eSlotMachine->matchedSymbols = 0;
+ CheckMatch_CenterRow();
+ if (eSlotMachine->bet > 1)
+ {
+ CheckMatch_TopAndBottom();
+ }
+ if (eSlotMachine->bet > 2)
+ {
+ CheckMatch_Diagonals();
+ }
+}
+
+static const u16 sSlotMatchFlags[];
+static const u16 sSlotPayouts[];
+
+static void CheckMatch_CenterRow(void)
+{
+ u8 c1, c2, c3, match;
+
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 2);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 2);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ eSlotMachine->payout += sSlotPayouts[match];
+ eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sub_8103E04(0);
+ }
+}
+
+static void CheckMatch_TopAndBottom(void)
+{
+ u8 c1, c2, c3, match;
+
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 1);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ if (match == SLOT_MACHINE_MATCHED_1CHERRY)
+ {
+ match = SLOT_MACHINE_MATCHED_2CHERRY;
+ }
+ eSlotMachine->payout += sSlotPayouts[match];
+ eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sub_8103E04(1);
+ }
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 3);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ if (match == SLOT_MACHINE_MATCHED_1CHERRY)
+ {
+ match = SLOT_MACHINE_MATCHED_2CHERRY;
+ }
+ eSlotMachine->payout += sSlotPayouts[match];
+ eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sub_8103E04(2);
+ }
+}
+
+static void CheckMatch_Diagonals(void)
+{
+ u8 c1, c2, c3, match;
+
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ if (match != SLOT_MACHINE_MATCHED_1CHERRY)
+ {
+ eSlotMachine->payout += sSlotPayouts[match];
+ eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ }
+ sub_8103E04(3);
+ }
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ if (match != SLOT_MACHINE_MATCHED_1CHERRY)
+ {
+ eSlotMachine->payout += sSlotPayouts[match];
+ eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ }
+ sub_8103E04(4);
+ }
+}
+
+static const u8 sSym2Match[];
+
+static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
+{
+ if (c1 == c2 && c1 == c3)
+ {
+ return sSym2Match[c1];
+ }
+ if (c1 == SLOT_MACHINE_TAG_7_RED && c2 == SLOT_MACHINE_TAG_7_RED && c3 == SLOT_MACHINE_TAG_7_BLUE)
+ {
+ return SLOT_MACHINE_MATCHED_777_MIXED;
+ }
+ if (c1 == SLOT_MACHINE_TAG_7_BLUE && c2 == SLOT_MACHINE_TAG_7_BLUE && c3 == SLOT_MACHINE_TAG_7_RED)
+ {
+ return SLOT_MACHINE_MATCHED_777_MIXED;
+ }
+ if (c1 == SLOT_MACHINE_TAG_CHERRY)
+ {
+ return SLOT_MACHINE_MATCHED_1CHERRY;
+ }
+ return SLOT_MACHINE_MATCHED_NONE;
+}
+
+static void sub_8102A24(void)
+{
+ sub_8102A64(CreateTask(sub_8102A64, 4));
+}
+
+static bool8 sub_8102A44(void)
+{
+ if (FindTaskIdByFunc(sub_8102A64) == 0xff)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 (*const gUnknown_083ECB20[])(struct Task *task) = {
+ sub_8102A9C,
+ sub_8102AD0,
+ sub_8102B80
+};
+
+static void sub_8102A64(u8 taskId)
+{
+ while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId));
+}
+
+static bool8 sub_8102A9C(struct Task *task)
+{
+ if (sub_8103E38())
+ {
+ task->data[0]++;
+ if (eSlotMachine->payout == 0)
+ {
+ task->data[0] = 2;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102AD0(struct Task *task)
+{
+ if (!task->data[1]--)
+ {
+ if (IsFanfareTaskInactive())
+ {
+ PlaySE(SE_PIN);
+ }
+ eSlotMachine->payout--;
+ if (eSlotMachine->coins < 9999)
+ {
+ eSlotMachine->coins++;
+ }
+ task->data[1] = 8;
+ if (gMain.heldKeys & A_BUTTON)
+ {
+ task->data[1] = 4;
+ }
+ }
+ if (IsFanfareTaskInactive() && gMain.newKeys & START_BUTTON)
+ {
+ PlaySE(SE_PIN);
+ eSlotMachine->coins += eSlotMachine->payout;
+ if (eSlotMachine->coins > 9999)
+ {
+ eSlotMachine->coins = 9999;
+ }
+ eSlotMachine->payout = 0;
+ }
+ if (eSlotMachine->payout == 0)
+ {
+ task->data[0]++;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102B80(struct Task *task)
+{
+ if (sub_8103E7C())
+ {
+ DestroyTask(FindTaskIdByFunc(sub_8102A64));
+ }
+ return FALSE;
+}
+
+static const u8 sReelSymbols[][21];
+
+static u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y)
+{
+ s16 offset = (eSlotMachine->reelPositions[x] + y) % 21;
+ if (offset < 0)
+ {
+ offset += 21;
+ }
+ return sReelSymbols[x][offset];
+}
+
+static u8 GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(u8 x, s16 y)
+{
+ s16 r6 = 0;
+ if ((eSlotMachine->unk1C[x]) % 24)
+ r6 = -1;
+ return GetTagOfReelSymbolOnScreenAtPos(x, y + r6);
+}
+
+static const u8 gUnknown_083ECCF1[];
+
+static u8 sub_8102C48(s16 a0)
+{
+ s16 r1 = (eSlotMachine->unk16 + a0) % 6;
+ if (r1 < 0)
+ r1 += 6;
+ return gUnknown_083ECCF1[r1];
+}
+
+static void sub_8102C84(u8 a0, s16 a1)
+{
+ eSlotMachine->unk1C[a0] += a1;
+ eSlotMachine->unk1C[a0] %= 504;
+ eSlotMachine->reelPositions[a0] = 21 - eSlotMachine->unk1C[a0] / 24;
+}
+
+static s16 sub_8102CCC(u8 a0, s16 a1)
+{
+ s16 r1 = eSlotMachine->unk1C[a0] % 24;
+ if (r1 != 0)
+ {
+ if (r1 < a1)
+ a1 = r1;
+ sub_8102C84(a0, a1);
+ r1 = eSlotMachine->unk1C[a0] % 24;
+ }
+ return r1;
+}
+
+static void sub_8102D28(s16 a0)
+{
+ eSlotMachine->unk14 += a0;
+ eSlotMachine->unk14 %= 120;
+ eSlotMachine->unk16 = 6 - eSlotMachine->unk14 / 20;
+}
+
+static s16 sub_8102D5C(s16 a0)
+{
+ s16 r1 = eSlotMachine->unk14 % 20;
+ if (r1 != 0)
+ {
+ if (r1 < a0)
+ a0 = r1;
+ sub_8102D28(a0);
+ r1 = eSlotMachine->unk14 % 20;
+ }
+ return r1;
+}
+
+static void sub_8102DA8(void)
+{
+ u8 i;
+ for (i = 0; i < 3; i++)
+ {
+ u8 taskId = CreateTask(sub_8102E68, 2);
+ gTasks[taskId].data[15] = i;
+ eSlotMachine->reelTasks[i] = taskId;
+ sub_8102E68(taskId);
+ }
+}
+
+static void sub_8102DEC(u8 a0)
+{
+ gTasks[eSlotMachine->reelTasks[a0]].data[0] = 1;
+ gTasks[eSlotMachine->reelTasks[a0]].data[14] = 1;
+}
+
+static void sub_8102E1C(u8 a0)
+{
+ gTasks[eSlotMachine->reelTasks[a0]].data[0] = 2;
+}
+
+static bool8 sub_8102E40(u8 a0)
+{
+ return gTasks[eSlotMachine->reelTasks[a0]].data[14];
+}
+
+static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = {
+ sub_8102EA0,
+ sub_8102EA4,
+ sub_8102EC0,
+ sub_8102F4C,
+ sub_8103008
+};
+
+static void sub_8102E68(u8 taskId)
+{
+ while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId));
+}
+
+static bool8 sub_8102EA0(struct Task *task)
+{
+ return FALSE;
+}
+
+static bool8 sub_8102EA4(struct Task *task)
+{
+ sub_8102C84(task->data[15], eSlotMachine->unk1A);
+ return FALSE;
+}
+
+static bool8 (*const gUnknown_083ECB40[])(void) = {
+ sub_810305C,
+ sub_81032C0,
+ sub_81033DC
+};
+static void (*const gUnknown_083ECB4C[])(void) = {
+ sub_81034F4,
+ sub_8103540,
+ sub_810380C
+};
+
+static bool8 sub_8102EC0(struct Task *task)
+{
+ task->data[0]++;
+ eSlotMachine->unk34[task->data[15]] = 0;
+ eSlotMachine->unk2E[task->data[15]] = 0;
+ if (eSlotMachine->unk0A == 0 && (eSlotMachine->unk04 == 0 || eSlotMachine->unk06 == 0 || !gUnknown_083ECB40[task->data[15]]()))
+ {
+ eSlotMachine->unk06 = 0;
+ gUnknown_083ECB4C[task->data[15]]();
+ }
+ task->data[1] = eSlotMachine->unk2E[task->data[15]];
+ return TRUE;
+}
+
+static bool8 sub_8102F4C(struct Task *task)
+{
+ u16 sp[] = {2, 4, 4, 4, 8};
+ s16 r2 = eSlotMachine->unk1C[task->data[15]] % 24;
+ if (r2 != 0)
+ {
+ r2 = sub_8102CCC(task->data[15], eSlotMachine->unk1A);
+ }
+ else if (eSlotMachine->unk2E[task->data[15]])
+ {
+ eSlotMachine->unk2E[task->data[15]]--;
+ sub_8102C84(task->data[15], eSlotMachine->unk1A);
+ r2 = eSlotMachine->unk1C[task->data[15]] % 24;
+ }
+ if (r2 == 0 && eSlotMachine->unk2E[task->data[15]] == 0)
+ {
+ task->data[0]++;
+ task->data[1] = sp[task->data[1]];
+ task->data[2] = 0;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8103008(struct Task *task)
+{
+ eSlotMachine->unk22[task->data[15]] = task->data[1];
+ task->data[1] = -task->data[1];
+ task->data[2]++;
+ if ((task->data[2] & 0x3) == 0)
+ {
+ task->data[1] >>= 1;
+ }
+ if (task->data[1] == 0)
+ {
+ task->data[0] = 0;
+ task->data[14] = 0;
+ eSlotMachine->unk22[task->data[15]] = 0;
+ }
+ return FALSE;
+}
+
+static bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) = {
+ sub_8103154,
+ sub_81031B4,
+ sub_81031B4
+};
+
+static bool8 sub_810305C(void)
+{
+ u8 r3 = sub_810250C(eSlotMachine->unk04);
+ u8 r5 = r3;
+ if (eSlotMachine->unk04 & 0xc0)
+ {
+ r5 = 0;
+ r3 = 1;
+ }
+ return gUnknown_083ECB64[eSlotMachine->bet - 1](r5, r3);
+}
+
+static bool8 sub_81030A4(s16 y, u8 tag1, u8 tag2)
+{
+ u8 tag = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, y);
+ if (tag == tag1 || tag == tag2)
+ {
+ eSlotMachine->unk07 = tag;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_81030E0(s16 y)
+{
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - y) == 4)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8103134(void)
+{
+ if (eSlotMachine->unk04 & 0xc2)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8103154(u8 a0, u8 a1)
+{
+ s16 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (sub_81030A4(2 - i, a0, a1))
+ {
+ eSlotMachine->unk34[0] = 2;
+ eSlotMachine->unk2E[0] = i;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_81031B4(u8 tag1, u8 tag2)
+{
+ s16 i;
+ bool8 r6 = sub_8103134();
+ if (r6 || !sub_81030E0(0))
+ {
+ for (i = 1; i < 4; i++)
+ {
+ if (sub_81030A4(i, tag1, tag2))
+ {
+ eSlotMachine->unk34[0] = i;
+ eSlotMachine->unk2E[0] = 0;
+ return TRUE;
+ }
+ }
+ }
+ for (i = 1; i < 5; i++)
+ {
+ bool8 r7 = r6;
+ if (r7 || !sub_81030E0(i))
+ {
+ if (sub_81030A4(1 - i, tag1, tag2))
+ {
+ if (i == 1 && (r7 || !sub_81030E0(3)))
+ {
+ eSlotMachine->unk34[0] = 3;
+ eSlotMachine->unk2E[0] = 3;
+ return TRUE;
+ }
+ if (i < 4 && (r7 || !sub_81030E0(i + 1)))
+ {
+ eSlotMachine->unk34[0] = 2;
+ eSlotMachine->unk2E[0] = i + 1;
+ return TRUE;
+ }
+ eSlotMachine->unk34[0] = 1;
+ eSlotMachine->unk2E[0] = i;
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+static bool8 (*const gUnknown_083ECB70[])(void) = {
+ sub_81032E8,
+ sub_81032E8,
+ sub_810333C
+};
+
+static bool8 sub_81032C0(void)
+{
+ return gUnknown_083ECB70[eSlotMachine->bet - 1]();
+}
+
+static bool8 sub_81032E8(void)
+{
+ s16 i;
+ s16 unk34_0 = eSlotMachine->unk34[0];
+
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, unk34_0 - i) == eSlotMachine->unk07)
+ {
+ eSlotMachine->unk34[1] = unk34_0;
+ eSlotMachine->unk2E[1] = i;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_810333C(void)
+{
+ s16 i;
+ if (sub_81032E8())
+ {
+ if (eSlotMachine->unk34[0] != 2 && eSlotMachine->unk2E[1] > 1 && eSlotMachine->unk2E[1] != 4)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == eSlotMachine->unk07)
+ {
+ eSlotMachine->unk34[1] = 2;
+ eSlotMachine->unk2E[1] = i;
+ break;
+ }
+ }
+ }
+ return TRUE;
+ }
+ if (eSlotMachine->unk34[0] != 2)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == eSlotMachine->unk07)
+ {
+ eSlotMachine->unk34[1] = 2;
+ eSlotMachine->unk2E[1] = i;
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+static bool8 (*const gUnknown_083ECB7C[])(u8 a0) = {
+ sub_810341C,
+ sub_810341C,
+ sub_810347C
+};
+
+static bool8 sub_81033DC(void)
+{
+ u8 r3 = eSlotMachine->unk07;
+ if (eSlotMachine->unk04 & 0x40)
+ {
+ r3 = 0;
+ if (eSlotMachine->unk07 == 0)
+ {
+ r3 = 1;
+ }
+ }
+ return gUnknown_083ECB7C[eSlotMachine->bet - 1](r3);
+}
+
+static bool8 sub_810341C(u8 a0)
+{
+ s16 i;
+ s16 unk34_1 = eSlotMachine->unk34[1];
+
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, unk34_1 - i) == a0)
+ {
+ eSlotMachine->unk34[2] = unk34_1;
+ eSlotMachine->unk2E[2] = i;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_810347C(u8 a0)
+{
+ s16 i;
+ s16 r8;
+ if (eSlotMachine->unk34[0] == eSlotMachine->unk34[1])
+ {
+ return sub_810341C(a0);
+ }
+ r8 = 1;
+ if (eSlotMachine->unk34[0] == 1)
+ {
+ r8 = 3;
+ }
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - i) == a0)
+ {
+ eSlotMachine->unk2E[2] = i;
+ eSlotMachine->unk34[2] = r8;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static void sub_81034F4(void)
+{
+ s16 i;
+ for (i = 0; sub_81030E0(i); i++);
+ eSlotMachine->unk2E[0] = i;
+}
+
+static bool8 sub_8103520(u8 *a0)
+{
+ if (*a0 == 0)
+ {
+ *a0 = 1;
+ return TRUE;
+ }
+ if (*a0 == 1)
+ {
+ *a0 = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void (*const gUnknown_083ECB88[])(void) = {
+ sub_8103564,
+ j5_08111E84,
+ sub_8103668
+};
+
+static void sub_8103540(void)
+{
+ gUnknown_083ECB88[eSlotMachine->bet - 1]();
+}
+
+static void sub_8103564(void)
+{
+ if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80)
+ {
+ u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - eSlotMachine->unk2E[0]);
+ if (sub_8103520(&sp0))
+ {
+ s16 i;
+ for (i = 0; i < 5; i++)
+ {
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i))
+ {
+ eSlotMachine->unk34[1] = 2;
+ eSlotMachine->unk2E[1] = i;
+ break;
+ }
+ }
+ }
+ }
+}
+
+static void j5_08111E84(void)
+{
+ if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80)
+ {
+ u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]);
+ if (sub_8103520(&sp0))
+ {
+ s16 i;
+ for (i = 0; i < 5; i++)
+ {
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[0] - i))
+ {
+ eSlotMachine->unk34[1] = eSlotMachine->unk34[0];
+ eSlotMachine->unk2E[1] = i;
+ break;
+ }
+ }
+ }
+ }
+}
+
+static void sub_8103668(void)
+{
+ s16 i;
+ s16 j;
+ if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80)
+ {
+ if (eSlotMachine->unk34[0] == 2)
+ {
+ j5_08111E84();
+ }
+ else
+ {
+ u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]);
+ if (sub_8103520(&sp0))
+ {
+ j = 2;
+ if (eSlotMachine->unk34[0] == 3)
+ j = 3;
+ for (i = 0; i < 2; i++, j--)
+ {
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, j))
+ {
+ eSlotMachine->unk34[1] = j;
+ eSlotMachine->unk2E[1] = 0;
+ return;
+ }
+ }
+ for (j = 1; j < 5; j++)
+ {
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[0] - j))
+ {
+ if (eSlotMachine->unk34[0] == 1)
+ {
+ if (j < 3)
+ {
+ eSlotMachine->unk34[1] = 2;
+ eSlotMachine->unk2E[1] = j + 1;
+ }
+ else
+ {
+ eSlotMachine->unk34[1] = 1;
+ eSlotMachine->unk2E[1] = j;
+ }
+ }
+ else
+ {
+ if (j < 3)
+ {
+ eSlotMachine->unk34[1] = 3;
+ eSlotMachine->unk2E[1] = j;
+ }
+ else
+ {
+ eSlotMachine->unk34[1] = 2;
+ eSlotMachine->unk2E[1] = j - 1;
+ }
+ }
+ return;
+ }
+ }
+ }
+ }
+ }
+}
+
+static bool8 sub_8103764(u8 a0, u8 a1)
+{
+ if ((a0 == 0 && a1 == 1) || (a0 == 1 && a1 == 0))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_810378C(u8 a0, u8 a1, u8 a2)
+{
+ if ((a0 == 0 && a1 == 1 && a2 == 0) || (a0 == 1 && a1 == 0 && a2 == 1))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_81037BC(u8 a0, u8 a1, u8 a2)
+{
+ if ((a0 == 0 && a1 == 1 && a2 == 0) ||
+ (a0 == 1 && a1 == 0 && a2 == 1) ||
+ (a0 == 0 && a1 == 0 && a2 == 1) ||
+ (a0 == 1 && a1 == 1 && a2 == 0) ||
+ (a0 == a1 && a0 == a2))
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static void (*const gUnknown_083ECB94[])(void) = {
+ sub_8103830,
+ sub_8103910,
+ sub_8103A78
+};
+
+static void sub_810380C(void)
+{
+ gUnknown_083ECB94[eSlotMachine->bet - 1]();
+}
+
+static void sub_8103830(void)
+{
+ s16 i = 0;
+ u8 r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - eSlotMachine->unk2E[0]);
+ u8 r1 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - eSlotMachine->unk2E[1]);
+ if (r5 == r1)
+ {
+ while (1)
+ {
+ u8 r0;
+ if (!(r5 == (r0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) || (r5 == 0 && r0 == 1) || (r5 == 1 && r0 == 0)))
+ {
+ break;
+ }
+ i++;
+ }
+ }
+ else if (sub_8103764(r5, r1))
+ {
+ if (eSlotMachine->unk04 & 0x80)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (r5 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
+ {
+ eSlotMachine->unk2E[2] = i;
+ return;
+ }
+ }
+ }
+ i = 0;
+ while (1)
+ {
+ if (r5 != GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
+ {
+ break;
+ }
+ i++;
+ }
+ }
+ eSlotMachine->unk2E[2] = i;
+}
+
+static void sub_8103910(void)
+{
+ s16 sp0 = 0;
+ s16 i;
+ u8 r7;
+ u8 r6;
+ u8 r4;
+
+ if (eSlotMachine->unk34[1] != 0 && eSlotMachine->unk34[0] == eSlotMachine->unk34[1] && eSlotMachine->unk04 & 0x80)
+ {
+ r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]);
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[1] - eSlotMachine->unk2E[1]);
+ if (sub_8103764(r7, r6))
+ {
+ for (i = 0; i < 5; i++)
+ {
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, eSlotMachine->unk34[1] - i);
+ if (r7 == r4)
+ {
+ sp0 = i;
+ break;
+ }
+ }
+ }
+ }
+ while (1)
+ {
+ s16 r8;
+ for (i = 1, r8 = 0; i < 4; i++)
+ {
+ r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, i - eSlotMachine->unk2E[0]);
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, i - eSlotMachine->unk2E[1]);
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, i - sp0);
+ if (!sub_81037BC(r7, r6, r4) && (!sub_810378C(r7, r6, r4) || !(eSlotMachine->unk04 & 0x80)))
+ {
+ r8++;
+ break;
+ }
+ }
+ if (r8 == 0)
+ {
+ break;
+ }
+ sp0++;
+ }
+ eSlotMachine->unk2E[2] = sp0;
+}
+
+static void sub_8103A78(void)
+{
+ u8 r6;
+ u8 r5;
+ u8 r4;
+ s16 r8;
+ s16 i;
+
+ sub_8103910();
+ if (eSlotMachine->unk34[1] != 0 && eSlotMachine->unk34[0] != eSlotMachine->unk34[1] && eSlotMachine->unk04 & 0x80)
+ {
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]);
+ r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[1] - eSlotMachine->unk2E[1]);
+ if (sub_8103764(r6, r5))
+ {
+ r8 = 1;
+ if (eSlotMachine->unk34[0] == 1)
+ r8 = 3;
+ for (i = 0; i < 5; i++)
+ {
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - (eSlotMachine->unk2E[2] + i));
+ if (r6 == r4)
+ {
+ eSlotMachine->unk2E[2] += i;
+ break;
+ }
+ }
+ }
+ }
+ while (1)
+ {
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - eSlotMachine->unk2E[0]);
+ r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - eSlotMachine->unk2E[1]);
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 3 - eSlotMachine->unk2E[2]);
+ if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && eSlotMachine->unk04 & 0x80))
+ break;
+ eSlotMachine->unk2E[2]++;
+ }
+ while (1)
+ {
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - eSlotMachine->unk2E[0]);
+ r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - eSlotMachine->unk2E[1]);
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 1 - eSlotMachine->unk2E[2]);
+ if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && eSlotMachine->unk04 & 0x80))
+ break;
+ eSlotMachine->unk2E[2]++;
+ }
+}
+
+static void sub_8103C14(u8 a0)
+{
+ u8 taskId = CreateTask(sub_8103C48, 5);
+ gTasks[taskId].data[15] = a0;
+ sub_8103C48(taskId);
+}
+
+static void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) = {
+ sub_8103C78,
+ sub_8103CAC,
+ sub_8103CC8
+};
+
+static void sub_8103C48(u8 taskId)
+{
+ gUnknown_083ECBA0[gTasks[taskId].data[0]](gTasks + taskId, taskId);
+}
+
+static const s16 gUnknown_083ECBAC[] = {5, 10, 15};
+
+static void sub_8103C78(struct Task *task, u8 taskId)
+{
+ sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x62, 0x63, 0x72, 0x73);
+ task->data[0]++;
+}
+
+static void sub_8103CAC(struct Task *task, u8 taskId)
+{
+ if (++task->data[1] > 11)
+ task->data[0]++;
+}
+
+static void sub_8103CC8(struct Task *task, u8 taskId)
+{
+ sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x42, 0x43, 0x52, 0x53);
+ DestroyTask(taskId);
+}
+
+static const u16 *const gUnknown_083EDD08[];
+static const u16 *const gUnknown_083EDD1C[];
+static const u8 gUnknown_083EDD30[];
+
+static void sub_8103D00(u8 a0)
+{
+ LoadPalette(gUnknown_083EDD08[a0], gUnknown_083EDD30[a0], 2);
+}
+
+static void sub_8103D28(u8 a0)
+{
+ LoadPalette(gUnknown_083EDD1C[a0], gUnknown_083EDD30[a0], 2);
+}
+
+static const u8 gUnknown_083EDD35[][2];
+static const u8 gUnknown_083EDD3B[];
+
+static void sub_8103D50(u8 a0)
+{
+ u8 i;
+ for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
+ {
+ sub_8103D00(gUnknown_083EDD35[a0][i]);
+ }
+}
+
+static void sub_8103D8C(u8 a0)
+{
+ u8 i;
+ for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
+ {
+ sub_8103D28(gUnknown_083EDD35[a0][i]);
+ }
+}
+
+static void sub_8103DC8(void)
+{
+ u8 i;
+ for (i = 0; i < 5; i++)
+ {
+ u8 spriteId = CreateInvisibleSprite(sub_8103EE4);
+ gSprites[spriteId].data[0] = i;
+ eSlotMachine->unk44[i] = spriteId;
+ }
+}
+
+static void sub_8103E04(u8 a0)
+{
+ struct Sprite *sprite = gSprites + eSlotMachine->unk44[a0];
+ sprite->data[1] = 1;
+ sprite->data[2] = 4;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->data[5] = 2;
+ sprite->data[7] = 0;
+}
+
+static bool8 sub_8103E38(void)
+{
+ u8 i;
+ for (i = 0; i < 5; i++)
+ {
+ struct Sprite *sprite = gSprites + eSlotMachine->unk44[i];
+ if (sprite->data[1] && sprite->data[2])
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static bool8 sub_8103E7C(void)
+{
+ u8 i;
+ for (i = 0; i < 5; i++)
+ {
+ if (!sub_8103EAC(eSlotMachine->unk44[i]))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static bool8 sub_8103EAC(u8 spriteId)
+{
+ struct Sprite *sprite = gSprites + spriteId;
+ if (!sprite->data[1])
+ return TRUE;
+ if (sprite->data[7])
+ sprite->data[1] = 0;
+ return sprite->data[7];
+}
+
+static void sub_8103EE4(struct Sprite *sprite)
+{
+ s16 r4;
+ if (sprite->data[1])
+ {
+ if (!sprite->data[3]--)
+ {
+ sprite->data[7] = 0;
+ sprite->data[3] = 1;
+ sprite->data[4] += sprite->data[5];
+ r4 = 4;
+ if (sprite->data[2])
+ r4 = 8;
+ if (sprite->data[4] <= 0)
+ {
+ sprite->data[7] = 1;
+ sprite->data[5] = -sprite->data[5];
+ if (sprite->data[2])
+ sprite->data[2]--;
+ }
+ else if (sprite->data[4] >= r4)
+ sprite->data[5] = -sprite->data[5];
+ if (sprite->data[2])
+ sprite->data[3] <<= 1;
+ }
+ MultiplyPaletteRGBComponents(gUnknown_083EDD30[sprite->data[0]], sprite->data[4], sprite->data[4], sprite->data[4]);
+ }
+}
+
+static void sub_8103F70(void)
+{
+ u8 taskId = CreateTask(sub_8103FE8, 6);
+ gTasks[taskId].data[3] = 1;
+ sub_8103FE8(taskId);
+}
+
+static const u16 *const gUnknown_083EDDA0[];
+static const u16 *const gUnknown_083EDDAC;
+
+static bool8 sub_8103FA0(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_8103FE8);
+ if (!gTasks[taskId].data[2])
+ {
+ DestroyTask(taskId);
+ LoadPalette(gUnknown_083EDDAC, 0x10, 0x20);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_8103FE8(u8 taskId)
+{
+ struct Task *task = gTasks + taskId;
+ if (!task->data[1]--)
+ {
+ task->data[1] = 4;
+ task->data[2] += task->data[3];
+ if (task->data[2] == 0 || task->data[2] == 2)
+ {
+ task->data[3] = -task->data[3];
+ }
+ }
+ LoadPalette(gUnknown_083EDDA0[task->data[2]], 0x10, 0x20);
+}
+
+static void sub_8104048(void)
+{
+ eSlotMachine->unk3E = CreateTask(sub_81040E8, 8);
+}
+
+static void sub_8104064(u8 pikaPower)
+{
+ struct Task *task = gTasks + eSlotMachine->unk3E;
+ sub_810421C(task);
+ task->data[0] = 1;
+ task->data[1]++;
+ task->data[15] = 1;
+}
+
+static void sub_8104098(void)
+{
+ struct Task *task = gTasks + eSlotMachine->unk3E;
+ sub_810421C(task);
+ task->data[0] = 3;
+ task->data[15] = 1;
+}
+
+static bool8 sub_81040C8(void)
+{
+ return gTasks[eSlotMachine->unk3E].data[15];
+}
+
+static void (*const gUnknown_083ECBB4[])(struct Task *task) = {
+ nullsub_68,
+ sub_810411C,
+ sub_8104144,
+ sub_81041AC
+};
+
+static void sub_81040E8(u8 taskId)
+{
+ gUnknown_083ECBB4[gTasks[taskId].data[0]](gTasks + taskId);
+}
+
+static void nullsub_68(struct Task *task)
+{
+
+}
+
+static void sub_810411C(struct Task *task)
+{
+ task->data[2] = sub_8105B1C((task->data[1] << 3) + 20, 20);
+ task->data[0]++;
+}
+
+static const u16 gUnknown_083ECBC4[][2] = {
+ {0x9e, 0x6e},
+ {0x9f, 0x6f},
+ {0xaf, 0x7f}
+};
+
+static void sub_8104144(struct Task *task)
+{
+ u16 *vaddr = (u16 *)BG_SCREEN_ADDR(29);
+ if (gSprites[task->data[2]].data[7])
+ {
+ s16 r2 = task->data[1] + 2;
+ u8 r0 = 0;
+ if (task->data[1] == 1)
+ r0 = 1;
+ else if (task->data[1] == 16)
+ r0 = 2;
+ vaddr[r2 + 0x40] = gUnknown_083ECBC4[r0][0];
+ sub_8105B88(task->data[2]);
+ task->data[0] = 0;
+ task->data[15] = 0;
+ }
+}
+
+static void sub_81041AC(struct Task *task)
+{
+ u16 *vaddr = (u16 *)BG_SCREEN_ADDR(29);
+ s16 r4 = task->data[1] + 2;
+ u8 r2 = 0;
+ if (task->data[1] == 1)
+ r2 = 1;
+ else if (task->data[1] == 16)
+ r2 = 2;
+ if (task->data[2] == 0)
+ {
+ vaddr[r4 + 0x40] = gUnknown_083ECBC4[r2][1];
+ task->data[1]--;
+ }
+ if (++task->data[2] >= 20)
+ task->data[2] = 0;
+ if (task->data[1] == 0)
+ {
+ task->data[0] = 0;
+ task->data[15] = 0;
+ }
+}
+
+static void sub_810421C(struct Task *task)
+{
+ u8 i;
+
+ for (i = 2; i < 16; i++)
+ task->data[i] = 0;
+}
+
+static void sub_810423C(u8 pikaPower)
+{
+ s16 i;
+ u8 r3;
+ s16 r2 = 3;
+ u16 *vaddr = (u16 *)BG_SCREEN_ADDR(29);
+ for (i = 0; i < pikaPower; i++, r2++)
+ {
+ r3 = 0;
+ if (i == 0)
+ r3 = 1;
+ else if (i == 15)
+ r3 = 2;
+ vaddr[r2 + 0x40] = gUnknown_083ECBC4[r3][0];
+ }
+ for (; i < 16; i++, r2++)
+ {
+ r3 = 0;
+ if (i == 0)
+ r3 = 1;
+ else if (i == 15)
+ r3 = 2;
+ vaddr[r2 + 0x40] = gUnknown_083ECBC4[r3][1];
+ }
+ gTasks[eSlotMachine->unk3E].data[1] = pikaPower;
+}
+
+static void sub_810430C(void)
+{
+ u8 taskId = CreateTask(sub_810434C, 7);
+ sub_810434C(taskId);
+}
+
+static bool8 sub_810432C(void)
+{
+ if (FindTaskIdByFunc(sub_810434C) == 0xFF)
+ return TRUE;
+ return FALSE;
+}
+
+static void (*const gUnknown_083ECBD0[])(struct Task *task) = {
+ sub_810437C,
+ sub_81043EC,
+ sub_8104468,
+ sub_8104498,
+ sub_8104548,
+ sub_8104598,
+ sub_81045CC,
+ sub_810463C,
+ sub_81046C0,
+ sub_8104764,
+ sub_8104794,
+ sub_81047EC,
+ sub_8104860,
+ sub_81048A8,
+ sub_81048CC,
+ sub_8104940,
+ sub_81049C8,
+ sub_8104794,
+ sub_81049F8
+};
+
+static void sub_810434C(u8 taskId)
+{
+ gUnknown_083ECBD0[gTasks[taskId].data[0]](gTasks + taskId);
+}
+
+static void sub_810437C(struct Task *task)
+{
+ eSlotMachine->unk0A = 0;
+ eSlotMachine->unk14 = 0;
+ eSlotMachine->unk16 = 0;
+ task->data[0]++;
+ task->data[1] = 0;
+ task->data[2] = 30;
+ task->data[4] = 1280;
+ gSpriteCoordOffsetX = 0;
+ gSpriteCoordOffsetY = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ sub_8104A40(30, 0);
+ sub_81051C0();
+ sub_8105100();
+ sub_81052EC();
+ sub_81053A0();
+ sub_810545C();
+ sub_8102680();
+ StopMapMusic();
+ PlayNewMapMusic(BGM_BD_TIME);
+}
+
+static void sub_81043EC(struct Task *task)
+{
+ s16 r3;
+ gSpriteCoordOffsetX -= 8;
+ task->data[1] += 8;
+ r3 = ((task->data[1] + 240) & 0xff) >> 3;
+ REG_BG1HOFS = task->data[1] & 0x1ff;
+ if (r3 != task->data[2] && task->data[3] <= 18)
+ {
+ task->data[2] = r3;
+ task->data[3] = task->data[1] >> 3;
+ sub_8104A40(r3, task->data[3]);
+ }
+ if (task->data[1] >= 200)
+ {
+ task->data[0]++;
+ task->data[3] = 0;
+ }
+ sub_8102D28(task->data[4] >> 8);
+}
+
+static void sub_8104468(struct Task *task)
+{
+ sub_8102D28(task->data[4] >> 8);
+ if (++task->data[5] >= 60)
+ {
+ task->data[0]++;
+ sub_8105578();
+ sub_81056F0();
+ }
+}
+
+static void sub_8104498(struct Task *task)
+{
+ int r5;
+ u8 sp0[] = {1, 1, 2, 2};
+ s16 sp4[] = {0x40, 0x30, 0x18, 0x08};
+ s16 spC[] = {10, 8, 6, 4};
+
+ sub_8102D28(task->data[4] >> 8);
+ task->data[4] -= 4;
+ r5 = 4 - (task->data[4] >> 8);
+ sub_8105688(sp4[r5]);
+ sub_81057E8(spC[r5]);
+ StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, sp0[r5]);
+ if (task->data[4] <= 0x100)
+ {
+ task->data[0]++;
+ task->data[4] = 0x100;
+ task->data[5] = 0;
+ }
+}
+
+static void sub_8104548(struct Task *task)
+{
+ sub_8102D28(task->data[4] >> 8);
+ if (++task->data[5] >= 80)
+ {
+ task->data[0]++;
+ task->data[5] = 0;
+ sub_81057E8(2);
+ StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 3);
+ }
+}
+
+static void sub_8104598(struct Task *task)
+{
+ sub_8102D28(task->data[4] >> 8);
+ task->data[4] = (u8)task->data[4] + 0x80;
+ if (++task->data[5] >= 80)
+ {
+ task->data[0]++;
+ task->data[5] = 0;
+ }
+}
+
+static void sub_81045CC(struct Task *task)
+{
+ sub_8102D28(task->data[4] >> 8);
+ task->data[4] = (u8)task->data[4] + 0x40;
+ if (++task->data[5] >= 40)
+ {
+ task->data[5] = 0;
+ if (eSlotMachine->unk05)
+ {
+ if (eSlotMachine->unk0A <= task->data[6])
+ {
+ task->data[0]++;
+ }
+ }
+ else if (task->data[6] > 3)
+ {
+ task->data[0]++;
+ }
+ else if (sub_81026DC(task->data[6]))
+ {
+ task->data[0] = 14;
+ }
+ task->data[6]++;
+ }
+}
+
+static void sub_810463C(struct Task *task)
+{
+ s16 r5 = eSlotMachine->unk14 % 20;
+ if (r5)
+ {
+ r5 = sub_8102D5C(task->data[4] >> 8);
+ task->data[4] = (u8)task->data[4] + 0x40;
+ }
+ else if (sub_8102C48(1) != eSlotMachine->unk05)
+ {
+ sub_8102D28(task->data[4] >> 8);
+ r5 = eSlotMachine->unk14 % 20;
+ task->data[4] = (u8)task->data[4] + 0x40;
+ }
+ if (r5 == 0 && sub_8102C48(1) == eSlotMachine->unk05)
+ {
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+}
+
+static void sub_81046C0(struct Task *task)
+{
+ if (++task->data[4] >= 60)
+ {
+ StopMapMusic();
+ sub_81056C0();
+ sub_8105804();
+ task->data[0]++;
+ if(eSlotMachine->unk05 == 0)
+ {
+ task->data[4] = 0xa0;
+ StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 5);
+ PlayFanfare(BGM_ME_ZANNEN);
+ }
+ else
+ {
+ task->data[4] = 0xc0;
+ StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 4);
+ gSprites[eSlotMachine->unk3F].animCmdIndex = 0;
+ if (eSlotMachine->pikaPower)
+ {
+ sub_8104098();
+ eSlotMachine->pikaPower = 0;
+ }
+ PlayFanfare(BGM_ME_B_SMALL);
+ }
+ }
+}
+
+static void sub_8104764(struct Task *task)
+{
+ if ((task->data[4] == 0 || --task->data[4] == 0) && !sub_81040C8())
+ {
+ task->data[0]++;
+ }
+}
+
+static void sub_8104794(struct Task *task)
+{
+ s16 r4;
+ gSpriteCoordOffsetX -= 8;
+ task->data[1] += 8;
+ task->data[3] += 8;
+ r4 = ((task->data[1] - 8) & 0xff) >> 3;
+ REG_BG1HOFS = task->data[1] & 0x1ff;
+ if (task->data[3] >> 3 <= 25)
+ {
+ sub_8104A88(r4);
+ }
+ else
+ {
+ task->data[0]++;
+ }
+}
+
+static void sub_81047EC(struct Task *task)
+{
+ eSlotMachine->unk0B = 0;
+ eSlotMachine->unk0A = eSlotMachine->unk05;
+ gSpriteCoordOffsetX = 0;
+ REG_BG1HOFS = 0;
+ eSlotMachine->unk1A = 8;
+ sub_810514C();
+ sub_81054B8();
+ sub_8105524();
+ PlayNewMapMusic(eSlotMachine->backupMapMusic);
+ if (eSlotMachine->unk0A == 0)
+ {
+ DestroyTask(FindTaskIdByFunc(sub_810434C));
+ }
+ else
+ {
+ sub_8104CAC(4);
+ task->data[1] = dp15_jump_random_unknown();
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[0]++;
+ }
+}
+
+static void sub_8104860(struct Task *task)
+{
+ if (eSlotMachine->unk1A == task->data[1])
+ {
+ task->data[0]++;
+ }
+ else if (eSlotMachine->unk1C[0] % 24 == 0 && (++task->data[2]& 0x07) == 0)
+ {
+ eSlotMachine->unk1A >>= 1;
+ }
+}
+
+static void sub_81048A8(struct Task *task)
+{
+ if (sub_8104E18())
+ {
+ DestroyTask(FindTaskIdByFunc(sub_810434C));
+ }
+}
+
+static void sub_81048CC(struct Task *task)
+{
+ sub_81054B8();
+ sub_81056C0();
+ sub_8105804();
+ sub_8105854();
+ gSprites[eSlotMachine->unk4E[0]].invisible = TRUE;
+ StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 5);
+ task->data[0]++;
+ task->data[4] = 4;
+ task->data[5] = 0;
+ StopMapMusic();
+ PlayFanfare(BGM_ME_ZANNEN);
+ PlaySE(SE_W153);
+}
+
+static void sub_8104940(struct Task *task)
+{
+ gSpriteCoordOffsetY = task->data[4];
+ REG_BG1VOFS = task->data[4];
+ if (task->data[5] & 0x01)
+ task->data[4] = -task->data[4];
+ if ((++task->data[5] & 0x1f) == 0)
+ task->data[4] >>= 1;
+ if (task->data[4] == 0)
+ {
+ sub_81058A0();
+ sub_81058C4();
+ sub_8105284();
+ sub_81059E8();
+ gSprites[eSlotMachine->unk4E[0]].invisible = FALSE;
+ task->data[0]++;
+ task->data[5] = 0;
+ }
+}
+
+static void sub_81049C8(struct Task *task)
+{
+ gSpriteCoordOffsetY = 0;
+ REG_BG1VOFS = 0;
+ if (sub_8105ACC())
+ {
+ task->data[0]++;
+ sub_8105AEC();
+ }
+}
+
+static void sub_81049F8(struct Task *task)
+{
+ gSpriteCoordOffsetX = 0;
+ REG_BG1HOFS = 0;
+ PlayNewMapMusic(eSlotMachine->backupMapMusic);
+ sub_810514C();
+ sub_8105554();
+ sub_8105524();
+ sub_81059B8();
+ DestroyTask(FindTaskIdByFunc(sub_810434C));
+}
+
+static const u16 sReelTimeWindowTilemap[];
+
+static void sub_8104A40(s16 a0, s16 a1)
+{
+ s16 i;
+
+ for (i = 4; i < 15; i++)
+ {
+ u16 tile = sReelTimeWindowTilemap[a1 + (i - 4) * 20];
+ ((u16 *)BG_SCREEN_ADDR(28))[32 * i + a0] = tile;
+ }
+}
+
+static void sub_8104A88(s16 a0)
+{
+ s16 i;
+
+ for (i = 4; i < 15; i++)
+ {
+ ((u16 *)BG_SCREEN_ADDR(28))[32 * i + a0] = 0;
+ }
+}
+
+static void sub_8104AB8(u8 a0)
+{
+ u8 taskId = CreateTask(sub_8104B0C, 1);
+ gTasks[taskId].data[1] = a0;
+ sub_8104B0C(taskId);
+}
+
+static bool8 sub_8104AEC(void)
+{
+ if (FindTaskIdByFunc(sub_8104B0C) == 0xFF)
+ return TRUE;
+ return FALSE;
+}
+
+static void (*const gUnknown_083ECC30[])(struct Task *task) = {
+ sub_8104B3C,
+ sub_8104B60,
+ sub_8104B80,
+ sub_8104B60,
+ sub_8104BC8,
+ sub_8104B60,
+ sub_8104BFC,
+ sub_8104B60,
+ sub_8104C44
+};
+
+static void sub_8104B0C(u8 taskId)
+{
+ gUnknown_083ECC30[gTasks[taskId].data[0]](gTasks + taskId);
+}
+
+static void sub_8104B3C(struct Task *task)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ task->data[0]++;
+}
+
+static void sub_8104B60(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ {
+ task->data[0]++;
+ }
+}
+
+static void sub_8104B80(struct Task *task)
+{
+ sub_8104DA4();
+ sub_81065DC();
+ BasicInitMenuWindow(&gWindowConfig_81E7144);
+ MenuPrint_PixelCoords(gOtherText_ReelTime, 10, 32, 1);
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ task->data[0]++;
+}
+
+static void sub_8104BC8(struct Task *task)
+{
+ if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON))
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ task->data[0]++;
+ }
+}
+
+static void sub_8104BFC(struct Task *task)
+{
+ MenuZeroFillScreen();
+ BasicInitMenuWindow(&gWindowConfig_81E7128);
+ sub_81064B8();
+ sub_8104CAC(task->data[1]);
+ sub_810423C(eSlotMachine->pikaPower);
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ task->data[0]++;
+}
+
+static void sub_8104C44(struct Task *task)
+{
+ DestroyTask(FindTaskIdByFunc(sub_8104B0C));
+}
+
+static void sub_8104C5C(void)
+{
+ u8 i;
+ struct Task *task;
+ i = CreateTask(sub_8104E74, 3);
+ eSlotMachine->unk3D = i;
+ task = gTasks + i;
+ task->data[1] = -1;
+ for (i = 4; i < 16; i++)
+ {
+ task->data[i] = MAX_SPRITES;
+ }
+}
static void LoadSlotMachineWheelOverlay(void);
-void sub_8104CAC(u8 arg0) {
+static void sub_8104CAC(u8 arg0) {
u8 i;
struct Task *task;
sub_8104DA4();
- task = &gTasks[ewram0_8->unk3D];
+ task = gTasks + eSlotMachine->unk3D;
task->data[1] = arg0;
- i = 0;
- while (gUnknown_083ED048[arg0][i].unk00 != 0xFF)
+ for (i = 0; gUnknown_083ED048[arg0][i].unk00 != 0xFF; i++)
{
u8 spriteId;
spriteId = sub_8105BB4(
@@ -59,20 +2879,1034 @@ void sub_8104CAC(u8 arg0) {
gSprites[spriteId].invisible = TRUE;
}
#endif
+ }
+}
+
+static void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4)
+{
+ u8 i;
+ struct Task *task = gTasks + eSlotMachine->unk3D;
+ for (i = 4; i < 16; i++)
+ {
+ if (task->data[i] == MAX_SPRITES)
+ {
+ task->data[i] = sub_8105BF8(a0, a1, a2, a3, a4);
+ break;
+ }
+ }
+}
+
+static void (*const gUnknown_083ED064[])(void);
+
+void sub_8104DA4(void)
+{
+ u8 i;
+ struct Task *task = gTasks + eSlotMachine->unk3D;
+ if ((u16)task->data[1] != 0xFFFF)
+ gUnknown_083ED064[task->data[1]]();
+ for (i = 4; i < 16; i++)
+ {
+ if (task->data[i] != MAX_SPRITES)
+ {
+ DestroySprite(gSprites + task->data[i]);
+ task->data[i] = MAX_SPRITES;
+ }
+ }
+}
+
+static bool8 sub_8104E18(void)
+{
+ u8 i;
+ struct Task *task = gTasks + eSlotMachine->unk3D;
+ for (i = 4; i < 16; i++)
+ {
+ if (task->data[i] != MAX_SPRITES)
+ {
+ if (gSprites[task->data[i]].data[7])
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+static void (*const gUnknown_083ECC54[])(struct Task *task) = {
+ nullsub_69
+};
+
+static void sub_8104E74(u8 taskId)
+{
+ gUnknown_083ECC54[gTasks[taskId].data[0]](gTasks + taskId);
+}
+
+static void nullsub_69(struct Task *task)
+{
+
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED414;
+
+static void sub_8104EA8(void)
+{
+ s16 i;
+ s16 j;
+ s16 x;
+ for (i = 0, x = 0x30; i < 3; i++, x += 0x28)
+ {
+ for (j = 0; j < 120; j += 24)
+ {
+ struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED414, x, 0, 14);
+ sprite->oam.priority = 3;
+ sprite->data[0] = i;
+ sprite->data[1] = j;
+ sprite->data[3] = -1;
+ }
+ }
+}
+
+static void sub_8104F18(struct Sprite *sprite)
+{
+ sprite->data[2] = eSlotMachine->unk1C[sprite->data[0]] + sprite->data[1];
+ sprite->data[2] %= 120;
+ sprite->pos1.y = eSlotMachine->unk22[sprite->data[0]] + 28 + sprite->data[2];
+ sprite->sheetTileStart = GetSpriteTileStartByTag(GetTagOfReelSymbolOnScreenAtPos(sprite->data[0], sprite->data[2] / 24));
+ SetSpriteSheetFrameTileNum(sprite);
+}
+
+static void sub_8104F8C(void)
+{
+ s16 i;
+ s16 x;
+ for (x = 203, i = 1; i < 10000; i *= 10, x -= 7)
+ {
+ sub_8104FF4(x, 23, 0, i);
+ }
+ for (x = 235, i = 1; i < 10000; i *= 10, x -= 7)
+ {
+ sub_8104FF4(x, 23, 1, i);
+ }
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED42C;
+
+static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3)
+{
+ struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED42C, x, y, 13);
+ sprite->oam.priority = 2;
+ sprite->data[0] = a2;
+ sprite->data[1] = a3;
+ sprite->data[2] = a3 * 10;
+ sprite->data[3] = -1;
+}
+
+static void sub_810506C(struct Sprite *sprite)
+{
+ u16 tag = eSlotMachine->coins;
+ if (sprite->data[0])
+ tag = eSlotMachine->payout;
+ if (sprite->data[3] != tag)
+ {
+ sprite->data[3] = tag;
+ tag %= (u16)sprite->data[2];
+ tag /= (u16)sprite->data[1];
+ tag += 7;
+ sprite->sheetTileStart = GetSpriteTileStartByTag(tag);
+ SetSpriteSheetFrameTileNum(sprite);
+ }
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED444;
+static const struct SubspriteTable gSubspriteTables_83ED704[];
+
+static void sub_81050C4(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED444, 0x58, 0x48, 15);
+ gSprites[spriteId].oam.priority = 3;
+ SetSubspriteTables(gSprites + spriteId, gSubspriteTables_83ED704);
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED45C;
+
+static void sub_8105100(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED45C, 0x118, 0x50, 1);
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
+ eSlotMachine->unk3F = spriteId;
+}
+
+static void sub_810514C(void)
+{
+ DestroySprite(gSprites + eSlotMachine->unk3F);
+}
+
+static void sub_8105170(struct Sprite *sprite)
+{
+ sprite->pos2.y = sprite->pos2.x = 0;
+ if (sprite->animNum == 4)
+ {
+ sprite->pos2.y = sprite->pos2.x = 8;
+ if ((sprite->animCmdIndex != 0 && sprite->animDelayCounter != 0) || (sprite->animCmdIndex == 0 && sprite->animDelayCounter == 0))
+ {
+ sprite->pos2.y = -8;
+ }
+ }
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED474;
+static const struct SpriteTemplate gSpriteTemplate_83ED48C;
+static const struct SubspriteTable gSubspriteTables_83ED73C[];
+static const struct SubspriteTable gSubspriteTables_83ED75C[];
+
+static void sub_81051C0(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED474, 0x170, 0x34, 7);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED73C);
+ eSlotMachine->unk49[0] = spriteId;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83ED48C, 0x170, 0x54, 7);
+ sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED75C);
+ eSlotMachine->unk49[1] = spriteId;
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4A4;
+static const struct SubspriteTable gSubspriteTables_83ED78C[];
+
+static void sub_8105284(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4A4, 0xa8 - gSpriteCoordOffsetX, 0x50, 7);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED78C);
+ eSlotMachine->unk42 = spriteId;
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4BC;
+
+static void sub_81052EC(void)
+{
+ u8 i;
+ s16 r5;
+ for (i = 0, r5 = 0; i < 3; i++, r5 += 20)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4BC, 0x170, 0x00, 10);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->data[7] = r5;
+ eSlotMachine->unk4B[i] = spriteId;
+ }
+}
+
+static void sub_810535C(struct Sprite *sprite)
+{
+ s16 r0 = (u16)(eSlotMachine->unk14 + sprite->data[7]);
+ r0 %= 40;
+ sprite->pos1.y = r0 + 59;
+ StartSpriteAnimIfDifferent(sprite, sub_8102C48(r0 / 20));
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4D4;
+static const struct SubspriteTable gSubspriteTables_83ED7B4[];
+
+static void sub_81053A0(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
+ eSlotMachine->unk4E[0] = spriteId;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x120, 0x68, 4);
+ sprite = gSprites + spriteId;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
+ eSlotMachine->unk4E[1] = spriteId;
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4EC;
+static const struct SubspriteTable gSubspriteTables_83ED7D4[];
+
+static void sub_810545C(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED7D4);
+ eSlotMachine->unk40 = spriteId;
+}
+
+static void sub_81054B8(void)
+{
+ u8 i;
+
+ DestroySprite(gSprites + eSlotMachine->unk40);
+ for (i = 0; i < 2; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk49[i]);
+ }
+ for (i = 0; i < 3; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk4B[i]);
+ }
+}
+
+static void sub_8105524(void)
+{
+ u8 i;
+ for (i = 0; i < 2; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk4E[i]);
+ }
+}
+
+static void sub_8105554(void)
+{
+ DestroySprite(gSprites + eSlotMachine->unk42);
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED504;
+
+static void sub_8105578(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->hFlip = TRUE;
+ eSlotMachine->unk50[0] = spriteId;
+ sprite->data[0] = 8;
+ sprite->data[1] = -1;
+ sprite->data[2] = -1;
+ sprite->data[7] = 0x20;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5);
+ sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ eSlotMachine->unk50[1] = spriteId;
+ sprite->data[1] = 1;
+ sprite->data[2] = -1;
+ sprite->data[7] = 0x20;
+}
+
+static void sub_810562C(struct Sprite *sprite)
+{
+ if (sprite->data[0] != 0)
+ {
+ sprite->data[0]--;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->invisible = TRUE;
+ }
+ else
+ {
+ sprite->invisible = FALSE;
+ sprite->pos2.x += sprite->data[1];
+ sprite->pos2.y += sprite->data[2];
+ if (++sprite->data[3] >= 8)
+ {
+ sprite->data[0] = sprite->data[7];
+ sprite->data[3] = 0;
+ }
+ }
+}
+
+static void sub_8105688(s16 a0)
+{
+ gSprites[eSlotMachine->unk50[0]].data[7] = a0;
+ gSprites[eSlotMachine->unk50[1]].data[7] = a0;
+}
+
+static void sub_81056C0(void)
+{
+ u8 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk50[i]);
+ }
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED51C;
+
+static void sub_81056F0(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x48, 0x50, 3);
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].data[0] = 1;
+ gSprites[spriteId].data[5] = 0;
+ gSprites[spriteId].data[6] = 16;
+ gSprites[spriteId].data[7] = 8;
+ eSlotMachine->unk52[0] = spriteId;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x68, 0x50, 3);
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].hFlip = TRUE;
+ eSlotMachine->unk52[1] = spriteId;
+}
+
+static const u8 gUnknown_083ECC58[2]; // don't remove this until decompiled through gUnknown_083ECCF8
+
+static void sub_8105784(struct Sprite *sprite)
+{
+ u8 sp[] = {16, 0};
+ if (sprite->data[0] && --sprite->data[6] <= 0)
+ {
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, sp[sprite->data[5]], sp[sprite->data[5]], sp[sprite->data[5]]);
+ ++sprite->data[5];
+ sprite->data[5] &= 1;
+ sprite->data[6] = sprite->data[7];
+ }
+}
+
+static void sub_81057E8(s16 a0)
+{
+ gSprites[eSlotMachine->unk52[0]].data[7] = a0;
+}
+
+static void sub_8105804(void)
+{
+ u8 i;
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, 0, 0, 0);
+ for (i = 0; i < 2; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk52[i]);
+ }
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED534;
+
+static void sub_8105854(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED534, 0xa8, 0x50, 6);
+ gSprites[spriteId].oam.priority = 1;
+ eSlotMachine->unk41 = spriteId;
+}
+
+static void sub_8105894(struct Sprite *sprite)
+{
+ sprite->pos2.y = gSpriteCoordOffsetY;
+}
+
+static void sub_81058A0(void)
+{
+ DestroySprite(gSprites + eSlotMachine->unk41);
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED54C;
+
+static void sub_81058C4(void)
+{
+ u8 i;
+ u16 sp[] = {0x0, 0x40, 0x80, 0xC0};
+ for (i = 0; i < 4; i++)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED54C, 0x50 - gSpriteCoordOffsetX, 0x44, 0);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->data[0] = sp[i];
+ eSlotMachine->unk54[i] = spriteId;
+ }
+}
- i += 1;
+static void sub_810594C(struct Sprite *sprite)
+{
+ sprite->data[0] -= 2;
+ sprite->data[0] &= 0xff;
+ sprite->pos2.x = Cos(sprite->data[0], 20);
+ sprite->pos2.y = Sin(sprite->data[0], 6);
+ sprite->subpriority = 0;
+ if (sprite->data[0] >= 0x80)
+ {
+ sprite->subpriority = 2;
+ }
+ if (++sprite->data[1] >= 16)
+ {
+ sprite->hFlip ^= 1;
+ sprite->data[1] = 0;
}
}
-asm(".section .text_b");
+static void sub_81059B8(void)
+{
+ u8 i;
+ for (i = 0; i < 4; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk54[i]);
+ }
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED564;
+
+static void sub_81059E8(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED564, 0xa8, 0x3c, 8);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ InitSpriteAffineAnim(sprite);
+ eSlotMachine->unk43 = spriteId;
+}
+
+static void sub_8105A38(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ if (sprite->affineAnimEnded)
+ sprite->data[0]++;
+ }
+ else if (sprite->data[0] == 1)
+ {
+ sprite->invisible ^= 1;
+ if (++sprite->data[2] >= 24)
+ {
+ sprite->data[0]++;
+ sprite->data[2] = 0;
+ }
+ }
+ else
+ {
+ sprite->invisible = TRUE;
+ if (++sprite->data[2] >= 16)
+ sprite->data[7] = 1;
+ }
+ sprite->data[1] &= 0xff;
+ sprite->data[1] += 16;
+ sprite->pos2.y -= (sprite->data[1] >> 8);
+}
+
+u8 sub_8105ACC(void)
+{
+ return gSprites[eSlotMachine->unk43].data[7];
+}
+
+static void sub_8105AEC(void)
+{
+ struct Sprite *sprite = gSprites + eSlotMachine->unk43;
+ FreeOamMatrix(sprite->oam.matrixNum);
+ DestroySprite(sprite);
+}
-void sub_8106448(void) {
+static const struct SpriteTemplate gSpriteTemplate_83ED6CC;
+
+static u8 sub_8105B1C(s16 x, s16 y)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED6CC, x, y, 12);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 2;
+ sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ InitSpriteAffineAnim(sprite);
+ return spriteId;
+}
+
+static void sub_8105B70(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ sprite->data[7] = 1;
+}
+
+static void sub_8105B88(u8 spriteId)
+{
+ struct Sprite *sprite = gSprites + spriteId;
+ FreeOamMatrix(sprite->oam.matrixNum);
+ DestroySprite(sprite);
+}
+
+static const s16 gUnknown_083ECE7E[][2];
+static const SpriteCallback gUnknown_083ECF0C[];
+
+u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2)
+{
+ return sub_8105BF8(templateIdx, gUnknown_083ECF0C[cbAndCoordsIdx], gUnknown_083ECE7E[cbAndCoordsIdx][0], gUnknown_083ECE7E[cbAndCoordsIdx][1], a2);
+}
+
+static const struct SpriteTemplate *const gUnknown_083EDB5C[];
+static const struct SubspriteTable *const gUnknown_083EDBC4[];
+
+static u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4)
+{
+ u8 spriteId = CreateSprite(gUnknown_083EDB5C[templateIdx], x, y, 16);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 3;
+ sprite->callback = callback;
+ sprite->data[6] = a4;
+ sprite->data[7] = 1;
+ if (gUnknown_083EDBC4[templateIdx])
+ SetSubspriteTables(sprite, gUnknown_083EDBC4[templateIdx]);
+ return spriteId;
+}
+
+static void sub_8105C64(struct Sprite *sprite)
+{
+ sprite->data[7] = 0;
+}
+
+static void sub_8105C6C(struct Sprite *sprite)
+{
+ s16 sp0[] = {4, -4, 4, -4};
+ s16 sp8[] = {4, 4, -4, -4};
+
+ if (sprite->data[1]++ >= 16)
+ {
+ sprite->subspriteTableNum ^= 1;
+ sprite->data[1] = 0;
+ }
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ if (sprite->subspriteTableNum != 0)
+ {
+ sprite->pos2.x = sp0[sprite->data[6]];
+ sprite->pos2.y = sp8[sprite->data[6]];
+ }
+}
+
+static void sub_8105CF0(struct Sprite *sprite)
+{
+ sprite->hFlip = TRUE;
+ sub_8105C6C(sprite);
+}
+
+static void sub_8105D08(struct Sprite *sprite)
+{
+ sprite->vFlip = TRUE;
+ sub_8105C6C(sprite);
+}
+
+static void sub_8105D20(struct Sprite *sprite)
+{
+ sprite->hFlip = TRUE;
+ sprite->vFlip = TRUE;
+ sub_8105C6C(sprite);
+}
+
+static void sub_8105D3C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0xd0)
+ {
+ sprite->pos1.x = 0xd0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 90)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0x110)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ sprite->data[7] = 0;
+ break;
+ }
+}
+
+static void sub_8105DA4(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.x -= 4;
+ if (sprite->pos1.x <= 0xd0)
+ {
+ sprite->pos1.x = 0xd0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 90)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->pos1.x -= 4;
+ if (sprite->pos1.x <= 0x90)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ sprite->data[7] = 0;
+ break;
+ }
+}
+
+static void sub_8105E08(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ StartSpriteAnim(sprite, eSlotMachine->unk0A - 1);
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ if (++sprite->data[1] >= 4)
+ {
+ sprite->data[0]++;
+ sprite->data[1] = 0;
+ }
+ break;
+ case 2:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0xd0)
+ {
+ sprite->pos1.x = 0xd0;
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ if (++sprite->data[1] > 90)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 4:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0xf8)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 5:
+ sprite->data[7] = 0;
+ break;
+ }
+}
+
+static void sub_8105EB4(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->animPaused = TRUE;
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ sprite->pos1.y += 8;
+ if (sprite->pos1.y >= 0x70)
+ {
+ sprite->pos1.y = 0x70;
+ sprite->data[1] = 16;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (sprite->data[2] == 0)
+ {
+ sprite->pos1.y -= sprite->data[1];
+ sprite->data[1] = -sprite->data[1];
+ if (++sprite->data[3] >= 2)
+ {
+ sprite->data[1] >>= 2;
+ sprite->data[3] = 0;
+ if (sprite->data[1] == 0)
+ {
+ sprite->data[0]++;
+ sprite->data[7] = 0;
+ sprite->animPaused = FALSE;
+ }
+ }
+ }
+ sprite->data[2]++;
+ sprite->data[2] &= 0x07;
+ break;
+ }
+}
+
+static void sub_8105F54(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[1] > 8)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ sprite->pos1.y += 2;
+ if (sprite->pos1.y >= 0x30)
+ {
+ sprite->pos1.y = 0x30;
+ sprite->data[0]++;
+ sprite->data[7] = 0;
+ }
+ break;
+ }
+}
+
+static void sub_8105F9C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->invisible = TRUE;
+ if (++sprite->data[1] > 0x20)
+ {
+ sprite->data[0]++;
+ sprite->data[1] = 5;
+ sprite->oam.mosaic = TRUE;
+ sprite->invisible = FALSE;
+ StartSpriteAnim(sprite, 1);
+ REG_MOSAIC = ((sprite->data[1] << 4) | sprite->data[1]) << 8;
+ }
+ break;
+ case 1:
+ sprite->data[1] -= (sprite->data[2] >> 8);
+ if (sprite->data[1] < 0)
+ {
+ sprite->data[1] = 0;
+ }
+ REG_MOSAIC = ((sprite->data[1] << 4) | sprite->data[1]) << 8;
+ sprite->data[2] &= 0xff;
+ sprite->data[2] += 0x80;
+ if (sprite->data[1] == 0)
+ {
+ sprite->data[0]++;
+ sprite->data[7] = 0;
+ sprite->oam.mosaic = FALSE;
+ StartSpriteAnim(sprite, 0);
+ }
+ break;
+ }
+}
+
+static const u16 *const gUnknown_083EDE10[];
+
+static void sub_8106058(struct Sprite *sprite)
+{
+ if (sprite->data[1] < 3)
+ {
+ LoadPalette(gUnknown_083EDE10[sprite->data[1]], (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
+ if (++sprite->data[2] >= 4)
+ {
+ sprite->data[1]++;
+ sprite->data[2] = 0;
+ }
+ }
+ else
+ {
+ LoadPalette(gUnknown_083EDE10[sprite->data[1]], (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
+ if (++sprite->data[2] >= 25)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ }
+ }
+ StartSpriteAnimIfDifferent(sprite, 1);
+ sprite->data[7] = 0;
+}
+
+static void sub_81060FC(struct Sprite *sprite)
+{
+ s16 sp00[] = {0, -40, 0, 0, 48, 0, 24, 0};
+ s16 sp10[] = {-32, 0, -32, -48, 0, -48, 0, -48};
+ s16 sp20[] = {16, 12, 16, 0, 0, 4, 8, 8};
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos2.x = sp00[sprite->data[6]];
+ sprite->pos2.y = sp10[sprite->data[6]];
+ sprite->data[1] = sp20[sprite->data[6]];
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ if (sprite->data[1]-- == 0)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (sprite->pos2.x > 0)
+ {
+ sprite->pos2.x -= 4;
+ }
+ else if (sprite->pos2.x < 0)
+ {
+ sprite->pos2.x += 4;
+ }
+ if (sprite->pos2.y > 0)
+ {
+ sprite->pos2.y -= 4;
+ }
+ else if (sprite->pos2.y < 0)
+ {
+ sprite->pos2.y += 4;
+ }
+ if (sprite->pos2.x == 0 && sprite->pos2.y == 0)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ }
+}
+
+static void sub_81061C8(struct Sprite *sprite)
+{
+ s16 sp0[] = {160, 192, 224, 104, 80, 64, 48, 24};
+
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[0]++;
+ sprite->data[1] = 12;
+ }
+ sprite->pos2.x = Cos(sp0[sprite->data[6]], sprite->data[1]);
+ sprite->pos2.y = Sin(sp0[sprite->data[6]], sprite->data[1]);
+ if (sprite->data[1])
+ {
+ sprite->data[1]--;
+ }
+}
+
+static void sub_8106230(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ eSlotMachine->winIn = 0x2f;
+ eSlotMachine->winOut = 0x3f;
+ eSlotMachine->win0v = 0x2088;
+ sprite->invisible = TRUE;
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ sprite->data[1] += 2;
+ sprite->data[2] = sprite->data[1] + 0xb0;
+ sprite->data[3] = 0xf0 - sprite->data[1];
+ if (sprite->data[2] > 0xd0)
+ {
+ sprite->data[2] = 0xd0;
+ }
+ if (sprite->data[3] < 0xd0)
+ {
+ sprite->data[3] = 0xd0;
+ }
+ eSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
+ if (sprite->data[1] > 0x33)
+ {
+ sprite->data[0]++;
+ eSlotMachine->winIn = 0x3f;
+ }
+ break;
+ case 2:
+ if (eSlotMachine->bet == 0)
+ {
+ break;
+ }
+ sub_8104D30(5, SpriteCallbackDummy, 0xd0, 0x74, 0);
+ eSlotMachine->win0h = 0xc0e0;
+ eSlotMachine->win0v = 0x6880;
+ eSlotMachine->winIn = 0x2f;
+ sprite->data[0]++;
+ sprite->data[1] = 0;
+ // fallthrough
+ case 3:
+ sprite->data[1] += 2;
+ sprite->data[2] = sprite->data[1] + 0xc0;
+ sprite->data[3] = 0xe0 - sprite->data[1];
+ if (sprite->data[2] > 0xd0)
+ {
+ sprite->data[2] = 0xd0;
+ }
+ if (sprite->data[3] < 0xd0)
+ {
+ sprite->data[3] = 0xd0;
+ }
+ eSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
+ if (sprite->data[1] > 0x0f)
+ {
+ sprite->data[0]++;
+ eSlotMachine->winIn = 0x3f;
+ }
+ break;
+ }
+}
+
+static void nullsub_70(void)
+{
+
+}
+
+static void sub_8106364(void)
+{
+ REG_MOSAIC = 0;
+}
+
+static const u16 *const gUnknown_083EDE20;
+
+static void sub_8106370(void)
+{
+ LoadPalette(gUnknown_083EDE20, (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
+}
+
+static void sub_810639C(void)
+{
+ eSlotMachine->win0h = 0xf0;
+ eSlotMachine->win0v = 0xa0;
+ eSlotMachine->winIn = 0x3f;
+ eSlotMachine->winOut = 0x3f;
+}
+
+static const u8 sReelTimeGfx[];
+static const struct SpriteSheet sSlotMachineSpriteSheets[];
+static const struct SpritePalette gSlotMachineSpritePalettes[];
+
+static void sub_81063C0(void)
+{
+ sub_8106404();
+ LZDecompressWram(gSlotMachineReelTimeLights_Gfx, eSlotMachineGfxBuffer);
+ LZDecompressWram(sReelTimeGfx, eSlotMachineReelTimeGfxBuffer);
+ LoadSpriteSheets(sSlotMachineSpriteSheets);
+ LoadSpritePalettes(gSlotMachineSpritePalettes);
+}
+
+static const u8 *const gUnknown_083EDCE4;
+static const struct SpriteSheet gUnknown_083EDCDC;
+
+static void sub_8106404(void)
+{
+ u8 *dest = eSlotMachineGfxBuffer;
+ u8 i = 0;
+ const struct SpriteSheet *sheet = &gUnknown_083EDCDC;
+ const u8 *src = gUnknown_083EDCE4;
+ for (i = 0; i < 0x40; i++)
+ {
+ u8 j;
+ for (j = 0; j < 0x20; j++, dest++)
+ {
+ *dest = src[j];
+ }
+ }
+ LoadSpriteSheet(sheet);
+}
+
+static void sub_8106448(void) {
u32 offsetRead, offsetWrite;
u32 size;
- LZDecompressWram(gSlotMachine_Gfx, ewram10000_2);
+ LZDecompressWram(gSlotMachine_Gfx, eSlotMachineGfxBuffer);
- offsetRead = (u32)ewram10000_2;
+ offsetRead = (u32)eSlotMachineGfxBuffer;
offsetWrite = BG_VRAM;
size = SLOTMACHINE_GFX_TILES * 32;
while (TRUE)
@@ -92,7 +3926,7 @@ void sub_8106448(void) {
LoadPalette(gPalette_83EDE24, 208, 32);
}
-void sub_81064B8(void) {
+static void sub_81064B8(void) {
CpuCopy16(gUnknown_08E95AB8, BG_SCREEN_ADDR(29), 20 * 32 * 2);
LoadSlotMachineWheelOverlay();
}
@@ -123,7 +3957,7 @@ static void LoadSlotMachineWheelOverlay(void) {
}
}
-void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) {
+static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) {
u16 *vram = BG_SCREEN_ADDR(29);
vram[15 * 32 + arg0] = arg1;
@@ -132,7 +3966,7 @@ void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) {
vram[16 * 32 + 1 + arg0] = arg4;
}
-void sub_81065DC(void) {
+static void sub_81065DC(void) {
s16 y, x;
u16 *screen;
@@ -147,3 +3981,1433 @@ void sub_81065DC(void) {
}
}
}
+
+static const u8 sReelSymbols[][21] = {
+ {
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY
+ }, {
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_CHERRY
+ }, {
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_CHERRY
+ }
+};
+
+static const u8 gUnknown_083ECCF1[] = {
+ 1, 0, 5, 4, 3, 2
+};
+
+static const s16 gUnknown_083ECCF8[][2] = {
+ {0, 6},
+ {0, 10},
+ {0, 2}
+};
+
+static const u8 gUnknown_083ECD04[][3] = {
+ {1, 1, 12},
+ {1, 1, 14},
+ {2, 2, 14},
+ {2, 2, 14},
+ {2, 3, 16},
+ {3, 3, 16}
+};
+
+static const u8 gUnknown_083ECD16[][6] = {
+ {25, 25, 30, 40, 40, 50},
+ {25, 25, 30, 30, 35, 35},
+ {25, 25, 30, 25, 25, 30}
+};
+
+static const u8 gUnknown_083ECD28[][6] = {
+ {20, 25, 25, 20, 25, 25},
+ {12, 15, 15, 18, 19, 22},
+ {25, 25, 25, 30, 30, 40},
+ {25, 25, 20, 20, 15, 15},
+ {40, 40, 35, 35, 40, 40}
+};
+
+static const u8 gUnknown_083ECD46[][17] = {
+ {243, 243, 243, 80, 80, 80, 80, 40, 40, 40, 40, 40, 40, 5, 5, 5, 5},
+ { 5, 5, 5, 150, 150, 150, 150, 130, 130, 130, 130, 130, 130, 100, 100, 100, 5},
+ { 4, 4, 4, 20, 20, 20, 20, 80, 80, 80, 80, 80, 80, 100, 100, 100, 40},
+ { 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 45, 45, 45, 100},
+ { 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 100},
+ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6}
+};
+
+static const u8 gUnknown_083ECDAC[][17] = {
+ { 243, 243, 243, 200, 200, 200, 200, 160, 160, 160, 160, 160, 160, 70, 70, 70, 5},
+ { 5, 5, 5, 25, 25, 25, 25, 5, 5, 5, 5, 5, 5, 2, 2, 2, 6},
+ { 4, 4, 4, 25, 25, 25, 25, 30, 30, 30, 30, 30, 30, 40, 40, 40, 35},
+ { 2, 2, 2, 3, 3, 3, 3, 30, 30, 30, 30, 30, 30, 100, 100, 100, 50},
+ { 1, 1, 1, 2, 2, 2, 2, 30, 30, 30, 30, 30, 30, 40, 40, 40, 100},
+ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 60}
+};
+
+static const u16 gUnknown_083ECE12[] = {
+ 0x80, 0xaf, 0xc8, 0xe1, 0x100
+};
+
+static const u16 gUnknown_083ECE1C[][2] = {
+ {10, 5},
+ {10, 10},
+ {10, 15},
+ {10, 25},
+ {10, 35}
+};
+
+static const u16 gUnknown_083ECE30[] = {
+ 0, 5, 10, 15, 20
+};
+
+
+static const u8 gUnknown_083ECE3A[] = {
+ 6, 4, 3, 2, 5, 0, 0, 0
+};
+
+static const u16 gUnknown_083ECE42[] = {
+ 0x80, 0x20, 0x40
+};
+
+static const u16 gUnknown_083ECE48[] = {
+ 0x10, 0x08, 0x04, 0x02, 0x01
+};
+
+static const u8 sSym2Match[] = {
+ SLOT_MACHINE_MATCHED_777_RED,
+ SLOT_MACHINE_MATCHED_777_BLUE,
+ SLOT_MACHINE_MATCHED_AZURILL,
+ SLOT_MACHINE_MATCHED_LOTAD,
+ SLOT_MACHINE_MATCHED_1CHERRY,
+ SLOT_MACHINE_MATCHED_POWER,
+ SLOT_MACHINE_MATCHED_REPLAY
+};
+
+static const u16 sSlotMatchFlags[] = {
+ 1 << SLOT_MACHINE_MATCHED_1CHERRY,
+ 1 << SLOT_MACHINE_MATCHED_2CHERRY,
+ 1 << SLOT_MACHINE_MATCHED_REPLAY,
+ 1 << SLOT_MACHINE_MATCHED_LOTAD,
+ 1 << SLOT_MACHINE_MATCHED_AZURILL,
+ 1 << SLOT_MACHINE_MATCHED_POWER,
+ 1 << SLOT_MACHINE_MATCHED_777_MIXED,
+ 1 << SLOT_MACHINE_MATCHED_777_RED,
+ 1 << SLOT_MACHINE_MATCHED_777_BLUE
+};
+
+static const u16 sSlotPayouts[] = {
+ 2, 4, 0, 6, 12, 3, 90, 300, 300
+};
+
+static const s16 gUnknown_083ECE7E[][2] = {
+ { 0xd0, 0x38},
+ { 0xb8, 0x00},
+ { 0xc8, 0x08},
+ { 0xd8, 0x10},
+ { 0xe8, 0x18},
+ { 0xd0, 0x48},
+ { 0xd0, 0x08},
+ { 0xd0, 0x40},
+ { 0xd0, 0x38},
+ { 0xc0, 0x58},
+ { 0xe0, 0x58},
+ { 0xc0, 0x78},
+ { 0xe0, 0x78},
+ { 0x90, 0x38},
+ {0x110, 0x58},
+ { 0xa8, 0x70},
+ { 0xd0, 0x54},
+ { 0xd0, 0x70},
+ { 0xbc, 0x34},
+ { 0xd0, 0x34},
+ { 0xe4, 0x34},
+ { 0xb8, 0x48},
+ { 0xc4, 0x48},
+ { 0xd0, 0x48},
+ { 0xdc, 0x48},
+ { 0xe8, 0x48},
+ { 0xbc, 0x34},
+ { 0xd0, 0x34},
+ { 0xe4, 0x34},
+ { 0xb8, 0x48},
+ { 0xc4, 0x48},
+ { 0xd0, 0x48},
+ { 0xdc, 0x48},
+ { 0xe8, 0x48},
+ { 0x00, 0x00}
+};
+
+static const SpriteCallback gUnknown_083ECF0C[] = {
+ sub_8105C64,
+ sub_8105F54,
+ sub_8105F54,
+ sub_8105F54,
+ sub_8105F54,
+ sub_8105F9C,
+ sub_8105EB4,
+ sub_8105C64,
+ sub_8105C64,
+ sub_8105C6C,
+ sub_8105CF0,
+ sub_8105D08,
+ sub_8105D20,
+ sub_8105D3C,
+ sub_8105DA4,
+ sub_8105E08,
+ sub_8105C64,
+ sub_8106058,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_8106230
+};
+
+static const struct UnkStruct1 Unknown_83ECF98[] = {
+ {25, 34, 0},
+ {2, 0, 0},
+ {9, 16, 0},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 Unknown_83ECFA8[] = {
+ {10, 1, 0},
+ {11, 2, 0},
+ {12, 3, 0},
+ {13, 4, 0},
+ {5, 5, 0},
+ {8, 6, 0},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 Unknown_83ECFC4[] = {
+ {3, 7, 0},
+ {8, 17, 0},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 Unknown_83ECFD0[] = {
+ {4, 8, 0},
+ {6, 9, 0},
+ {6, 10, 1},
+ {6, 11, 2},
+ {6, 12, 3},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 Unknown_83ECFE8[] = {
+ {0, 13, 0},
+ {1, 14, 0},
+ {7, 15, 0},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 Unknown_83ECFF8[] = {
+ {19, 26, 0},
+ {20, 27, 1},
+ {21, 28, 2},
+ {14, 29, 3},
+ {15, 30, 4},
+ {16, 31, 5},
+ {17, 32, 6},
+ {18, 33, 7},
+ {8, 17, 0},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 Unknown_83ED020[] = {
+ {22, 18, 0},
+ {23, 19, 1},
+ {24, 20, 2},
+ {14, 21, 3},
+ {15, 22, 4},
+ {16, 23, 5},
+ {17, 24, 6},
+ {18, 25, 7},
+ {8, 17, 0},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 *const gUnknown_083ED048[] = {
+ Unknown_83ECF98,
+ Unknown_83ECFA8,
+ Unknown_83ECFC4,
+ Unknown_83ECFD0,
+ Unknown_83ECFE8,
+ Unknown_83ED020,
+ Unknown_83ECFF8
+};
+
+static void (*const gUnknown_083ED064[])(void) = {
+ sub_810639C,
+ sub_8106364,
+ sub_8106370,
+ nullsub_70,
+ nullsub_70,
+ sub_8106370,
+ sub_8106370
+};
+
+
+static const struct OamData gOamData_83ED080 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED088 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_V_RECTANGLE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED090 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED098 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_V_RECTANGLE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED0A0 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED0A8 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_V_RECTANGLE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED0B0 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_H_RECTANGLE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED0B8 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED0C0[] = {
+ {eSlotMachineReelTimeGfxBuffer + 0x0000, 0x800},
+ {eSlotMachineReelTimeGfxBuffer + 0x0800, 0x800},
+ {eSlotMachineReelTimeGfxBuffer + 0x1000, 0x800},
+ {eSlotMachineReelTimeGfxBuffer + 0x1800, 0x800},
+ {eSlotMachineReelTimeGfxBuffer + 0x2000, 0x800}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED0E8[] = {
+ {eSlotMachineReelTimeGfxBuffer + 0x2800, 0x300}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED0F0[] = {
+ {eSlotMachineReelTimeGfxBuffer + 0x2B00, 0x500}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED0F8[] = {
+ {eSlotMachineReelTimeGfxBuffer + 0x3000, 0x600}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED100[] = {
+ {gSpriteImage_8E988E8, 0x80},
+ {gSpriteImage_8E98968, 0x80},
+ {gSpriteImage_8E989E8, 0x80},
+ {gSpriteImage_8E98A68, 0x80},
+ {gSpriteImage_8E98AE8, 0x80},
+ {gSpriteImage_8E98B68, 0x80}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED130[] = {
+ {gSpriteImage_8E991E8, 0x200}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED138[] = {
+ {gSpriteImage_8E99808, 0x40}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED140[] = {
+ {gSpriteImage_8E98BE8, 0x100},
+ {gSpriteImage_8E98CE8, 0x100}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED150[] = {
+ {gSpriteImage_8E993E8, 0x400}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED158[] = {
+ {gSpriteImage_8E98DE8, 0x200},
+ {gSpriteImage_8E98FE8, 0x200}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED168[] = {
+ {gSpriteImage_8E98848, 0x20}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED170[] = {
+ {gSpriteImage_8E98868, 0x80}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED178[] = {
+ {eSlotMachineGfxBuffer + 0x0000, 0x600}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED180[] = {
+ {eSlotMachineGfxBuffer + 0x0600, 0x200}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED188[] = {
+ {eSlotMachineGfxBuffer + 0x0800, 0x200}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED190[] = {
+ {eSlotMachineGfxBuffer + 0x0A00, 0x200}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED198[] = {
+ {eSlotMachineGfxBuffer + 0x0C00, 0x300}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1A0[] = {
+ {eSlotMachineGfxBuffer + 0x1000, 0x400}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1A8[] = {
+ {eSlotMachineGfxBuffer + 0x1400, 0x200}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1B0[] = {
+ {eSlotMachineGfxBuffer + 0x1600, 0x300}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1B8[] = {
+ {eSlotMachineGfxBuffer + 0x1900, 0x300}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1C0[] = {
+ {eSlotMachineGfxBuffer + 0x1C00, 0x200},
+ {eSlotMachineGfxBuffer + 0x1E00, 0x200},
+ {eSlotMachineGfxBuffer + 0x1E00, 0x200} // is this a typo?
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1D8[] = {
+ {eSlotMachineGfxBuffer + 0x2000, 0x280}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1E0[] = {
+ {eSlotMachineGfxBuffer + 0x2280, 0x80},
+ {eSlotMachineGfxBuffer + 0x2300, 0x80},
+ {eSlotMachineGfxBuffer + 0x2380, 0x80},
+ {eSlotMachineGfxBuffer + 0x2400, 0x80},
+ {eSlotMachineGfxBuffer + 0x2480, 0x80}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED208[] = {
+ {eSlotMachineGfxBuffer + 0x2600, 0x480},
+ {eSlotMachineGfxBuffer + 0x2A80, 0x480}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED218[] = {
+ {eSlotMachineGfxBuffer + 0x2F00, 0x180},
+ {eSlotMachineGfxBuffer + 0x3080, 0x180}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED228[] = {
+ {gSpriteImage_8E98828, 0x20}
+};
+
+static const union AnimCmd gSpriteAnim_83ED230[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED238[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED240[] = {
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED248[] = {
+ ANIMCMD_FRAME(1, 16),
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED254[] = {
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED260[] = {
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED26C[] = {
+ ANIMCMD_FRAME(2, 32),
+ ANIMCMD_FRAME(3, 32),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED278[] = {
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED280[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED288[] = {
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED290[] = {
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED298[] = {
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED2A0[] = {
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED2A8[] = {
+ ANIMCMD_FRAME(5, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED2B0[] = {
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED2BC[] = {
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_FRAME(1, 16),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED2C8[] = {
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_FRAME(1, 30),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED2D4[] = {
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED2DC[] = {
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_FRAME(1, 30),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED2E8[] = {
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_FRAME(1, 16),
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_FRAME(1, 16, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED2FC[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED304[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED30C[] = {
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED314[] = {
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED31C[] = {
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED324[] = {
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED32C[] = {
+ gSpriteAnim_83ED230
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED330[] = {
+ gSpriteAnim_83ED238
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED334[] = {
+ gSpriteAnim_83ED240,
+ gSpriteAnim_83ED248,
+ gSpriteAnim_83ED254,
+ gSpriteAnim_83ED260,
+ gSpriteAnim_83ED26C,
+ gSpriteAnim_83ED278
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED34C[] = {
+ gSpriteAnim_83ED280,
+ gSpriteAnim_83ED288,
+ gSpriteAnim_83ED290,
+ gSpriteAnim_83ED298,
+ gSpriteAnim_83ED2A0,
+ gSpriteAnim_83ED2A8
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED364[] = {
+ gSpriteAnim_83ED2B0
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED368[] = {
+ gSpriteAnim_83ED2BC
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED36C[] = {
+ gSpriteAnim_83ED2C8,
+ gSpriteAnim_83ED2D4
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED374[] = {
+ gSpriteAnim_83ED2DC
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED378[] = {
+ gSpriteAnim_83ED2E8,
+ gSpriteAnim_83ED2FC
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED380[] = {
+ gSpriteAnim_83ED304,
+ gSpriteAnim_83ED30C,
+ gSpriteAnim_83ED314,
+ gSpriteAnim_83ED31C,
+ gSpriteAnim_83ED324
+};
+
+static const union AffineAnimCmd gSpriteAffineAnim_83ED394[] = {
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0x1, 0x1, 0, 1),
+ AFFINEANIMCMD_LOOP(255),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_83ED3BC[] = {
+ gSpriteAffineAnim_83ED394
+};
+
+static const union AffineAnimCmd gSpriteAffineAnim_83ED3C0[] = {
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 32),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 6, 32),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 12, 2),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 12, 2),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 12, 2),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 12, 2),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_83ED410[] = {
+ gSpriteAffineAnim_83ED3C0
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED414 = {
+ 0, 0, &gOamData_83ED0A0, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, sub_8104F18
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED42C = {
+ 7, 4, &gOamData_83ED088, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, sub_810506C
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED444 = {
+ 17, 0, &gOamData_83ED0B8, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED45C = {
+ 0xFFFF, 1, &gOamData_83ED0B8, gSpriteAnimTable_83ED334, gSpriteImageTable_83ED0C0, gDummySpriteAffineAnimTable, sub_8105170
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED474 = {
+ 0xFFFF, 2, &gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0E8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED48C = {
+ 0xFFFF, 3, &gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0F0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4A4 = {
+ 0xFFFF, 3, &gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0F8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4BC = {
+ 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED34C, gSpriteImageTable_83ED100, gDummySpriteAffineAnimTable, sub_810535C
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4D4 = {
+ 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED130, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4EC = {
+ 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED138, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED504 = {
+ 0xFFFF, 4, &gOamData_83ED098, gSpriteAnimTable_83ED364, gSpriteImageTable_83ED140, gDummySpriteAffineAnimTable, sub_810562C
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED51C = {
+ 0xFFFF, 7, &gOamData_83ED0A8, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED150, gDummySpriteAffineAnimTable, sub_8105784
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED534 = {
+ 0xFFFF, 5, &gOamData_83ED0A0, gSpriteAnimTable_83ED368, gSpriteImageTable_83ED158, gDummySpriteAffineAnimTable, sub_8105894
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED54C = {
+ 0xFFFF, 4, &gOamData_83ED080, gSpriteAnimTable_83ED330, gSpriteImageTable_83ED168, gDummySpriteAffineAnimTable, sub_810594C
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED564 = {
+ 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED170, gSpriteAffineAnimTable_83ED3BC, sub_8105A38
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED57C = {
+ 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED178, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED594 = {
+ 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED180, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED5AC = {
+ 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED188, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED5C4 = {
+ 18, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED190, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED5DC = {
+ 0xFFFF, 6, &gOamData_83ED0B0, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED198, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED5F4 = {
+ 0xFFFF, 6, &gOamData_83ED0B0, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1A0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED60C = {
+ 19, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1A8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED624 = {
+ 20, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1B0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED63C = {
+ 21, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1B8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED654 = {
+ 0xFFFF, 6, &gOamData_83ED0A0, gSpriteAnimTable_83ED36C, gSpriteImageTable_83ED1C0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED66C = {
+ 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1D8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED684 = {
+ 0xFFFF, 6, &gOamData_83ED090, gSpriteAnimTable_83ED380, gSpriteImageTable_83ED1E0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED69C = {
+ 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED378, gSpriteImageTable_83ED208, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED6B4 = {
+ 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED374, gSpriteImageTable_83ED218, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED6CC = {
+ 0xFFFF, 4, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED228, gSpriteAffineAnimTable_83ED410, sub_8105B70
+};
+
+static const struct Subsprite gSubspriteTable_83ED6E4[] = {
+ {-64, -64, ST_OAM_SQUARE, 3, 0x0, 3},
+ {0, -64, ST_OAM_SQUARE, 3, 0x0, 3},
+ {-64, 0, ST_OAM_SQUARE, 3, 0x0, 3},
+ {0, 0, ST_OAM_SQUARE, 3, 0x0, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED704[] = {
+ {4, gSubspriteTable_83ED6E4}
+};
+
+static const struct Subsprite gSubspriteTable_83ED70C[] = {
+ {-32, -12, ST_OAM_H_RECTANGLE, 1, 0x0, 1},
+ {0, -12, ST_OAM_H_RECTANGLE, 1, 0x4, 1},
+ {-32, -4, ST_OAM_H_RECTANGLE, 1, 0x8, 1},
+ {0, -4, ST_OAM_H_RECTANGLE, 1, 0xc, 1},
+ {-32, 4, ST_OAM_H_RECTANGLE, 1, 0x10, 1},
+ {0, 4, ST_OAM_H_RECTANGLE, 1, 0x14, 1}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED73C[] = {
+ {6, gSubspriteTable_83ED70C}
+};
+
+static const struct Subsprite gSubspriteTable_83ED744[] = {
+ {-32, -20, ST_OAM_H_RECTANGLE, 3, 0x0, 1},
+ {-32, 12, ST_OAM_H_RECTANGLE, 1, 0x20, 1},
+ {0, 12, ST_OAM_H_RECTANGLE, 1, 0x24, 1}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED75C[] = {
+ {3, gSubspriteTable_83ED744}
+};
+
+static const struct Subsprite gSubspriteTable_83ED764[] = {
+ {-32, -24, ST_OAM_H_RECTANGLE, 3, 0x0, 1},
+ {-32, 8, ST_OAM_H_RECTANGLE, 1, 0x20, 1},
+ {0, 8, ST_OAM_H_RECTANGLE, 1, 0x24, 1},
+ {-32, 16, ST_OAM_H_RECTANGLE, 1, 0x28, 1},
+ {0, 16, ST_OAM_H_RECTANGLE, 1, 0x2c, 1}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED78C[] = {
+ {5, gSubspriteTable_83ED764}
+};
+
+static const struct Subsprite gSubspriteTable_83ED794[] = {
+ {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 1},
+ {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 1},
+ {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 1},
+ {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 1}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED7B4[] = {
+ {4, gSubspriteTable_83ED794}
+};
+
+static const struct Subsprite gSubspriteTable_83ED7BC[] = {
+ {-8, -12, ST_OAM_H_RECTANGLE, 0, 0x0, 1},
+ {-8, -4, ST_OAM_H_RECTANGLE, 0, 0x0, 1},
+ {-8, 4, ST_OAM_H_RECTANGLE, 0, 0x0, 1}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED7D4[] = {
+ {3, gSubspriteTable_83ED7BC}
+};
+
+static const struct Subsprite gSubspriteTable_83ED7DC[] = {
+ {-32, -24, ST_OAM_H_RECTANGLE, 3, 0x0, 3},
+ {-32, 8, ST_OAM_H_RECTANGLE, 1, 0x20, 3},
+ {0, 8, ST_OAM_H_RECTANGLE, 1, 0x24, 3},
+ {-32, 16, ST_OAM_H_RECTANGLE, 1, 0x28, 3},
+ {0, 16, ST_OAM_H_RECTANGLE, 1, 0x2c, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED804[] = {
+ {5, gSubspriteTable_83ED7DC}
+};
+
+static const struct Subsprite gSubspriteTable_83ED80C[] = {
+ {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 3},
+ {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 3},
+ {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 3},
+ {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED82C[] = {
+ {4, gSubspriteTable_83ED80C}
+};
+
+static const struct Subsprite gSubspriteTable_83ED834[] = {
+ {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 3},
+ {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 3},
+ {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 3},
+ {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED854[] = {
+ {4, gSubspriteTable_83ED834}
+};
+
+static const struct Subsprite gSubspriteTable_83ED85C[] = {
+ {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 3},
+ {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 3},
+ {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 3},
+ {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED87C[] = {
+ {4, gSubspriteTable_83ED85C}
+};
+
+static const struct Subsprite gSubspriteTable_83ED884[] = {
+ {-32, -12, ST_OAM_H_RECTANGLE, 1, 0x0, 3},
+ {0, -12, ST_OAM_H_RECTANGLE, 1, 0x4, 3},
+ {-32, -4, ST_OAM_H_RECTANGLE, 1, 0x8, 3},
+ {0, -4, ST_OAM_H_RECTANGLE, 1, 0xc, 3},
+ {-32, 4, ST_OAM_H_RECTANGLE, 1, 0x10, 3},
+ {0, 4, ST_OAM_H_RECTANGLE, 1, 0x14, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED8B4[] = {
+ {6, gSubspriteTable_83ED884}
+};
+
+static const struct Subsprite gSubspriteTable_83ED8BC[] = {
+ {-16, -16, ST_OAM_SQUARE, 2, 0x0, 3}
+};
+
+static const struct Subsprite gSubspriteTable_83ED8C4[] = {
+ {-8, -8, ST_OAM_SQUARE, 1, 0x10, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED8CC[] = {
+ {1, gSubspriteTable_83ED8BC},
+ {1, gSubspriteTable_83ED8C4}
+};
+
+static const struct Subsprite gSubspriteTable_83ED8DC[] = {
+ {-24, -24, ST_OAM_H_RECTANGLE, 1, 0x0, 3},
+ {8, -24, ST_OAM_H_RECTANGLE, 0, 0x4, 3},
+ {-24, -16, ST_OAM_H_RECTANGLE, 1, 0x6, 3},
+ {8, -16, ST_OAM_H_RECTANGLE, 0, 0xa, 3},
+ {-24, -8, ST_OAM_H_RECTANGLE, 1, 0xc, 3},
+ {8, -8, ST_OAM_H_RECTANGLE, 0, 0x10, 3},
+ {-24, 0, ST_OAM_H_RECTANGLE, 1, 0x12, 3},
+ {8, 0, ST_OAM_H_RECTANGLE, 0, 0x16, 3},
+ {-24, 8, ST_OAM_H_RECTANGLE, 1, 0x18, 3},
+ {8, 8, ST_OAM_H_RECTANGLE, 0, 0x1c, 3},
+ {-24, 16, ST_OAM_H_RECTANGLE, 1, 0x1e, 3},
+ {8, 16, ST_OAM_H_RECTANGLE, 0, 0x22, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED93C[] = {
+ 12, gSubspriteTable_83ED8DC
+};
+
+static const struct Subsprite gSubspriteTable_83ED944[] = {
+ {-16, -12, ST_OAM_H_RECTANGLE, 2, 0x0, 3},
+ {-16, 4, ST_OAM_H_RECTANGLE, 0, 0x8, 3},
+ {0, 4, ST_OAM_H_RECTANGLE, 0, 0xa, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED95C[] = {
+ {3, gSubspriteTable_83ED944}
+};
+
+static const struct Subsprite gSubspriteTable_83ED964[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x0, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0x8, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED974[] = {
+ {2, gSubspriteTable_83ED964}
+};
+
+static const struct Subsprite gSubspriteTable_83ED97C[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x2, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xa, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED98C[] = {
+ {2, gSubspriteTable_83ED97C}
+};
+
+static const struct Subsprite gSubspriteTable_83ED994[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x4, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xc, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED9A4[] = {
+ {2, gSubspriteTable_83ED994}
+};
+
+static const struct Subsprite gSubspriteTable_83ED9AC[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x6, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xe, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED9BC[] = {
+ {2, gSubspriteTable_83ED9AC}
+};
+
+static const struct Subsprite gSubspriteTable_83ED9C4[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x0, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0x8, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED9D4[] = {
+ {2, gSubspriteTable_83ED9C4}
+};
+
+static const struct Subsprite gSubspriteTable_83ED9DC[] = {
+ {-4, -8, ST_OAM_SQUARE, 0, 0x2, 3},
+ {-4, 0, ST_OAM_SQUARE, 0, 0xa, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED9EC[] = {
+ {2, gSubspriteTable_83ED9DC}
+};
+
+static const struct Subsprite gSubspriteTable_83ED9F4[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x3, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xb, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDA04[] = {
+ {2, gSubspriteTable_83ED9F4}
+};
+
+static const struct Subsprite gSubspriteTable_83EDA0C[] = {
+ {-4, -8, ST_OAM_SQUARE, 0, 0x5, 3},
+ {-4, 0, ST_OAM_SQUARE, 0, 0xd, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDA1C[] = {
+ {2, gSubspriteTable_83EDA0C}
+};
+
+static const struct Subsprite gSubspriteTable_83EDA24[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x6, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xe, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDA34[] = {
+ {2, gSubspriteTable_83EDA24}
+};
+
+static const struct Subsprite gSubspriteTable_83EDA3C[] = {
+ {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x0, 3},
+ {4, -12, ST_OAM_SQUARE, 0, 0x2, 3},
+ {-12, -4, ST_OAM_H_RECTANGLE, 0, 0x8, 3},
+ {4, -4, ST_OAM_SQUARE, 0, 0xa, 3},
+ {-12, 4, ST_OAM_H_RECTANGLE, 0, 0x10, 3},
+ {4, 4, ST_OAM_SQUARE, 0, 0x12, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDA6C[] = {
+ {6, gSubspriteTable_83EDA3C}
+};
+
+static const struct Subsprite gSubspriteTable_83EDA74[] = {
+ {-8, -12, ST_OAM_H_RECTANGLE, 0, 0x3, 3},
+ {-8, -4, ST_OAM_H_RECTANGLE, 0, 0xb, 3},
+ {-8, 4, ST_OAM_H_RECTANGLE, 0, 0x13, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDA8C[] = {
+ {3, gSubspriteTable_83EDA74}
+};
+
+static const struct Subsprite gSubspriteTable_83EDA94[] = {
+ {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x5, 3},
+ {4, -12, ST_OAM_SQUARE, 0, 0x7, 3},
+ {-12, -4, ST_OAM_H_RECTANGLE, 0, 0xd, 3},
+ {4, -4, ST_OAM_SQUARE, 0, 0xf, 3},
+ {-12, 4, ST_OAM_H_RECTANGLE, 0, 0x15, 3},
+ {4, 4, ST_OAM_SQUARE, 0, 0x17, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDAC4[] = {
+ {6, gSubspriteTable_83EDA94}
+};
+
+static const struct Subsprite gSubspriteTable_83EDACC[] = {
+ {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x0, 3},
+ {4, -12, ST_OAM_SQUARE, 0, 0x2, 3},
+ {-12, -4, ST_OAM_H_RECTANGLE, 0, 0x8, 3},
+ {4, -4, ST_OAM_SQUARE, 0, 0xa, 3},
+ {-12, 4, ST_OAM_H_RECTANGLE, 0, 0x10, 3},
+ {4, 4, ST_OAM_SQUARE, 0, 0x12, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDAFC[] = {
+ {6, gSubspriteTable_83EDACC}
+};
+
+static const struct Subsprite gSubspriteTable_83EDB04[] = {
+ {-8, -12, ST_OAM_H_RECTANGLE, 0, 0x3, 3},
+ {-8, -4, ST_OAM_H_RECTANGLE, 0, 0xb, 3},
+ {-8, 4, ST_OAM_H_RECTANGLE, 0, 0x13, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDB1C[] = {
+ {3, gSubspriteTable_83EDB04}
+};
+
+static const struct Subsprite gSubspriteTable_83EDB24[] = {
+ {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x5, 3},
+ {4, -12, ST_OAM_SQUARE, 0, 0x7, 3},
+ {-12, -4, ST_OAM_H_RECTANGLE, 0, 0xd, 3},
+ {4, -4, ST_OAM_SQUARE, 0, 0xf, 3},
+ {-12, 4, ST_OAM_H_RECTANGLE, 0, 0x15, 3},
+ {4, 4, ST_OAM_SQUARE, 0, 0x17, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDB54[] = {
+ {6, gSubspriteTable_83EDB24}
+};
+
+static const struct SpriteTemplate *const gUnknown_083EDB5C[] = {
+ &gSpriteTemplate_83ED57C,
+ &gSpriteTemplate_83ED594,
+ &gSpriteTemplate_83ED5AC,
+ &gSpriteTemplate_83ED5DC,
+ &gSpriteTemplate_83ED5F4,
+ &gSpriteTemplate_83ED654,
+ &gSpriteTemplate_83ED66C,
+ &gSpriteTemplate_83ED684,
+ &gSpriteTemplate_83ED69C,
+ &gSpriteTemplate_83ED6B4,
+ &gSpriteTemplate_83ED5C4,
+ &gSpriteTemplate_83ED5C4,
+ &gSpriteTemplate_83ED5C4,
+ &gSpriteTemplate_83ED5C4,
+ &gSpriteTemplate_83ED60C,
+ &gSpriteTemplate_83ED60C,
+ &gSpriteTemplate_83ED60C,
+ &gSpriteTemplate_83ED60C,
+ &gSpriteTemplate_83ED60C,
+ &gSpriteTemplate_83ED624,
+ &gSpriteTemplate_83ED624,
+ &gSpriteTemplate_83ED624,
+ &gSpriteTemplate_83ED63C,
+ &gSpriteTemplate_83ED63C,
+ &gSpriteTemplate_83ED63C,
+ &gDummySpriteTemplate
+};
+
+static const struct SubspriteTable *const gUnknown_083EDBC4[] = {
+ gSubspriteTables_83ED804,
+ gSubspriteTables_83ED82C,
+ gSubspriteTables_83ED854,
+ gSubspriteTables_83ED8B4,
+ NULL,
+ NULL,
+ gSubspriteTables_83ED8CC,
+ NULL,
+ gSubspriteTables_83ED93C,
+ gSubspriteTables_83ED95C,
+ gSubspriteTables_83ED974,
+ gSubspriteTables_83ED98C,
+ gSubspriteTables_83ED9A4,
+ gSubspriteTables_83ED9BC,
+ gSubspriteTables_83ED9D4,
+ gSubspriteTables_83ED9EC,
+ gSubspriteTables_83EDA04,
+ gSubspriteTables_83EDA1C,
+ gSubspriteTables_83EDA34,
+ gSubspriteTables_83EDA6C,
+ gSubspriteTables_83EDA8C,
+ gSubspriteTables_83EDAC4,
+ gSubspriteTables_83EDAFC,
+ gSubspriteTables_83EDB1C,
+ gSubspriteTables_83EDB54,
+ NULL
+};
+
+static const struct SpriteSheet sSlotMachineSpriteSheets[] = {
+ {gSlotMachineReelSymbol1Tiles, 0x200, 0},
+ {gSlotMachineReelSymbol2Tiles, 0x200, 1},
+ {gSlotMachineReelSymbol3Tiles, 0x200, 2},
+ {gSlotMachineReelSymbol4Tiles, 0x200, 3},
+ {gSlotMachineReelSymbol5Tiles, 0x200, 4},
+ {gSlotMachineReelSymbol6Tiles, 0x200, 5},
+ {gSlotMachineReelSymbol7Tiles, 0x200, 6},
+ {gSlotMachineNumber0Tiles, 0x40, 7},
+ {gSlotMachineNumber1Tiles, 0x40, 8},
+ {gSlotMachineNumber2Tiles, 0x40, 9},
+ {gSlotMachineNumber3Tiles, 0x40, 10},
+ {gSlotMachineNumber4Tiles, 0x40, 11},
+ {gSlotMachineNumber5Tiles, 0x40, 12},
+ {gSlotMachineNumber6Tiles, 0x40, 13},
+ {gSlotMachineNumber7Tiles, 0x40, 14},
+ {gSlotMachineNumber8Tiles, 0x40, 15},
+ {gSlotMachineNumber9Tiles, 0x40, 16},
+ {eSlotMachineGfxBuffer + 0x0A00, 0x200, 18},
+ {eSlotMachineGfxBuffer + 0x1400, 0x200, 19},
+ {eSlotMachineGfxBuffer + 0x1600, 0x300, 20},
+ {eSlotMachineGfxBuffer + 0x1900, 0x300, 21},
+ {}
+};
+
+static const struct SpriteSheet gUnknown_083EDCDC = {
+ eSlotMachineGfxBuffer + 0x0000, 0x800, 17
+};
+
+static const u8 *const gUnknown_083EDCE4 = gUnknownPalette_08E997E8;
+
+#ifdef SAPPHIRE
+static const u16 UnknownPalette_83EDCE8[] = INCBIN_U16("graphics/unknown/sapphire_83EDD40.gbapal");
+#elif defined(RUBY)
+static const u16 UnknownPalette_83EDCE8[] = INCBIN_U16("graphics/unknown/ruby_83EDCE8.gbapal");
+#endif // RS
+
+static const u16 *const gUnknown_083EDD08[] = {
+ UnknownPalette_83EDCE8 + 10,
+ UnknownPalette_83EDCE8 + 11,
+ UnknownPalette_83EDCE8 + 12,
+ UnknownPalette_83EDCE8 + 13,
+ UnknownPalette_83EDCE8 + 14
+};
+
+static const u16 *const gUnknown_083EDD1C[] = {
+ gUnknown_08E95A18 + 74,
+ gUnknown_08E95A18 + 75,
+ gUnknown_08E95A18 + 76,
+ gUnknown_08E95A18 + 77,
+ gUnknown_08E95A18 + 78
+};
+
+static const u8 gUnknown_083EDD30[] = {
+ 0x4a, 0x4b, 0x4c, 0x4e, 0x4d
+};
+
+static const u8 gUnknown_083EDD35[][2] = {
+ {0, 0},
+ {1, 2},
+ {3, 4}
+};
+static const u8 gUnknown_083EDD3B[] = {1, 2, 2};
+
+#ifdef SAPPHIRE
+static const u16 Unknown_83EDD3E[] = INCBIN_U16("graphics/unknown/sapphire_83EDD96.gbapal");
+static const u16 Unknown_83EDD5E[] = INCBIN_U16("graphics/unknown/sapphire_83EDDB6.gbapal");
+static const u16 Unknown_83EDD7E[] = INCBIN_U16("graphics/unknown/sapphire_83EDDD6.gbapal");
+#elif defined (RUBY)
+static const u16 Unknown_83EDD3E[] = INCBIN_U16("graphics/unknown/ruby_83EDD3E.gbapal");
+static const u16 Unknown_83EDD5E[] = INCBIN_U16("graphics/unknown/ruby_83EDD5E.gbapal");
+static const u16 Unknown_83EDD7E[] = INCBIN_U16("graphics/unknown/ruby_83EDD7E.gbapal");
+#endif // RS
+
+static const u16 *const gUnknown_083EDDA0[] = {
+ Unknown_83EDD3E,
+ Unknown_83EDD5E,
+ Unknown_83EDD7E
+};
+
+static const u16 *const gUnknown_083EDDAC = gUnknown_08E95A18 + 16;
+
+static const u16 Palette_83EDDB0[] = INCBIN_U16("graphics/slot_machine/83EDDB0.gbapal");
+static const u16 Palette_83EDDD0[] = INCBIN_U16("graphics/slot_machine/83EDDD0.gbapal");
+static const u16 Palette_83EDDF0[] = INCBIN_U16("graphics/slot_machine/83EDDF0.gbapal");
+
+static const u16 *const gUnknown_083EDE10[] = {
+ Palette_83EDDB0,
+ Palette_83EDDD0,
+ Palette_83EDDF0,
+ gSlotMachineSpritePalette6
+};
+
+static const u16 *const gUnknown_083EDE20 = gSlotMachineSpritePalette6;
+
+static const u16 gPalette_83EDE24[] = INCBIN_U16("graphics/slot_machine/83EDE24_pal.bin");
+
+static const struct SpritePalette gSlotMachineSpritePalettes[] = {
+ {gSlotMachineSpritePalette0, 0},
+ {gSlotMachineSpritePalette1, 1},
+ {gSlotMachineSpritePalette2, 2},
+ {gSlotMachineSpritePalette3, 3},
+ {gSlotMachineSpritePalette4, 4},
+ {gSlotMachineSpritePalette5, 5},
+ {gSlotMachineSpritePalette6, 6},
+ {gSlotMachineSpritePalette4, 7},
+ {}
+};
+
+static const u8 sReelTimeGfx[] = INCBIN_U8("graphics/slot_machine/reel_time.4bpp.lz");
+
+static const u16 sReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/reel_time_window_map.bin");
diff --git a/src/libs/libc.c b/src/libs/libc.c
deleted file mode 100644
index 920673e3e..000000000
--- a/src/libs/libc.c
+++ /dev/null
@@ -1,143 +0,0 @@
-#include "global.h"
-#include <stddef.h>
-
-#define LBLOCKSIZE (sizeof(long))
-
-// Nonzero if (long)X contains a NULL byte.
-#define CONTAINSNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080)
-
-// Nonzero if X is not aligned on a "long" boundary.
-#define UNALIGNED(X) ((long)X & (LBLOCKSIZE - 1))
-
-void *memcpy(void *dst0, const void *src0, size_t len0)
-{
- char *dst = dst0;
- const char *src = src0;
- long *aligned_dst;
- const long *aligned_src;
- unsigned int len = len0;
-
- // If the size is small, or either src or dst is unaligned,
- // then go to the byte copy loop. This should be rare.
- if (len >= 16 && !(UNALIGNED(src) | UNALIGNED(dst)))
- {
- aligned_dst = (long *)dst;
- aligned_src = (long *)src;
-
- // Copy 4X long words at a time if possible.
- while (len >= 16)
- {
- *aligned_dst++ = *aligned_src++;
- *aligned_dst++ = *aligned_src++;
- *aligned_dst++ = *aligned_src++;
- *aligned_dst++ = *aligned_src++;
- len -= 16;
- }
-
- // Copy one long word at a time if possible
- while (len >= 4)
- {
- *aligned_dst++ = *aligned_src++;
- len -= 4;
- }
-
- dst = (char *)aligned_dst;
- src = (char *)aligned_src;
- }
-
- // Pick up any remaining bytes with a byte copier.
- while (len--)
- *dst++ = *src++;
-
- return dst0;
-}
-
-void *memset(void *m, int c, size_t n)
-{
- char *s = (char *)m;
- int count, i;
- unsigned long buffer;
- unsigned long *aligned_addr;
- unsigned char *unaligned_addr;
-
- // If the size is small or m is unaligned,
- // then go to the byte copy loop. This should be rare.
- if (n >= LBLOCKSIZE && !UNALIGNED(m))
- {
- // We know that n is large and m is word-aligned.
- aligned_addr = (unsigned long *)m;
-
- // Store C into each char sized location in buffer so that
- // we can set large blocks quickly.
- c &= 0xFF;
- if (LBLOCKSIZE == 4)
- {
- buffer = (c << 8) | c;
- buffer |= (buffer << 16);
- }
- else
- {
- buffer = 0;
- for (i = 0; i < LBLOCKSIZE; i++)
- buffer = (buffer << 8) | c;
- }
-
- while (n >= LBLOCKSIZE * 4)
- {
- *aligned_addr++ = buffer;
- *aligned_addr++ = buffer;
- *aligned_addr++ = buffer;
- *aligned_addr++ = buffer;
- n -= LBLOCKSIZE * 4;
- }
- while (n >= LBLOCKSIZE)
- {
- *aligned_addr++ = buffer;
- n -= LBLOCKSIZE;
- }
-
- s = (char *)aligned_addr;
- }
-
- // Pick up the remainder with a bytewise loop.
- while (n--)
- *s++ = (char)c;
-
- return m;
-}
-
-int strcmp(const char *s1, const char *s2)
-{
- unsigned long *a1;
- unsigned long *a2;
-
- // If s1 or s2 are unaligned, then skip this and compare bytes.
- if (!(UNALIGNED(s1) | UNALIGNED(s2)))
- {
- // Compare them a word at a time.
- a1 = (unsigned long *)s1;
- a2 = (unsigned long *)s2;
- while (*a1 == *a2)
- {
- // If *a1 == *a2, and we find a null in *a1,
- // then the strings must be equal, so return zero.
- if (CONTAINSNULL(*a1))
- return 0;
-
- a1++;
- a2++;
- }
-
- s1 = (char *)a1;
- s2 = (char *)a2;
- }
-
- // Check the remaining few bytes.
- while (*s1 != '\0' && *s1 == *s2)
- {
- s1++;
- s2++;
- }
-
- return (*(unsigned char *) s1) - (*(unsigned char *) s2);
-}
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index cf57f8823..9cf28a111 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -1565,7 +1565,7 @@ void *sub_8079BFC(s16 bottom, s16 top) {
void sub_8079C08(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7) {
task->data[8] = a7;
- task->data[15] = a2;
+ task->data[15] = a2; // spriteId
task->data[9] = a3;
task->data[10] = a4;
task->data[13] = a5;