shithub: pokecrystal

ref: bb2aba7da172f8ede8c3eb6f3602f62eff4d55be
dir: /battle/bg_effects.asm/

View raw version
; BG effects for use in battle animations.

ExecuteBGEffects: ; c8000 (32:4000)
	ld hl, ActiveBGEffects
	ld e, $5
.loop
	ld a, [hl]
	and a
	jr z, .next
	ld c, l
	ld b, h
	push hl
	push de
	call Functionc804a
	pop de
	pop hl
.next
	ld bc, $4
	add hl, bc
	dec e
	jr nz, .loop
	ret

QueueBGEffect: ; c801a (32:401a)
	ld hl, ActiveBGEffects
	ld e, $5
.loop
	ld a, [hl]
	and a
	jr z, .load
	ld bc, $4
	add hl, bc
	dec e
	jr nz, .loop
	scf
	ret

.load
	ld c, l
	ld b, h
	ld hl, $0
	add hl, bc
	ld a, [BattleAnimTemps]
	ld [hli], a
	ld a, [BattleAnimTemps + 1]
	ld [hli], a
	ld a, [BattleAnimTemps + 2]
	ld [hli], a
	ld a, [BattleAnimTemps + 3]
	ld [hl], a
	ret

EndBattleBGEffect: ; c8043 (32:4043)
	ld hl, 0
	add hl, bc
	ld [hl], 0
	ret

Functionc804a: ; c804a (32:404a)
	ld hl, 0
	add hl, bc
	ld e, [hl]
	ld d, 0
	ld hl, BattleBGEffects
rept 2
	add hl, de
endr
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

BattleBGEffects: ; c805a (32:405a)
	dw BattleBGEffect_End
	dw BattleBGEffect_FlashInverted
	dw BattleBGEffect_FlashWhite
	dw BattleBGEffect_WhiteHues
	dw BattleBGEffect_BlackHues
	dw BattleBGEffect_AlternateHues
	dw BattleBGEffect_06
	dw BattleBGEffect_07
	dw BattleBGEffect_08
	dw BattleBGEffect_HideMon
	dw BattleBGEffect_ShowMon
	dw BattleBGEffect_EnterMon
	dw BattleBGEffect_ReturnMon
	dw BattleBGEffect_Surf
	dw BattleBGEffect_Whirlpool
	dw BattleBGEffect_Teleport
	dw BattleBGEffect_NightShade
	dw BattleBGEffect_FeetFollow
	dw BattleBGEffect_HeadFollow
	dw BattleBGEffect_DoubleTeam
	dw BattleBGEffect_AcidArmor
	dw BattleBGEffect_RapidFlash
	dw BattleBGEffect_16
	dw BattleBGEffect_17
	dw BattleBGEffect_18
	dw BattleBGEffect_19
	dw BattleBGEffect_1a
	dw BattleBGEffect_1b
	dw BattleBGEffect_1c
	dw BattleBGEffect_1d
	dw BattleBGEffect_1e
	dw BattleBGEffect_1f
	dw BattleBGEffect_20
	dw BattleBGEffect_21
	dw BattleBGEffect_22
	dw BattleBGEffect_23
	dw BattleBGEffect_Tackle
	dw BattleBGEffect_25
	dw BattleBGEffect_26
	dw BattleBGEffect_27
	dw BattleBGEffect_28
	dw BattleBGEffect_Psychic
	dw BattleBGEffect_2a
	dw BattleBGEffect_2b
	dw BattleBGEffect_2c
	dw BattleBGEffect_2d
	dw BattleBGEffect_2e
	dw BattleBGEffect_2f
	dw BattleBGEffect_30
	dw BattleBGEffect_31
	dw BattleBGEffect_32
	dw BattleBGEffect_VibrateMon
	dw BattleBGEffect_WobbleMon
	dw BattleBGEffect_35


BattleBGEffect_End: ; c80c6 (32:40c6)
	call EndBattleBGEffect
	ret

Functionc80ca: ; c80ca (32:40ca)
	ld hl, $1
	add hl, bc
	ld l, [hl]
	ld h, $0
	add hl, hl
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret

BattleBGEffects_AnonJumptable: ; c80d7 (32:40d7)
	pop de
	ld hl, $1
	add hl, bc
	ld l, [hl]
	ld h, $0
	add hl, hl
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

Functionc80e5: ; c80e5 (32:40e5)
	ld hl, $1
	add hl, bc
	inc [hl]
	ret

BattleBGEffect_FlashInverted: ; c80eb (32:40eb)
	ld de, .inverted
	jp Functionc80fb

; c80f1 (32:40f1)

.inverted
	db %11100100 ; 3210
	db %00011011 ; 0123
; c80f3

BattleBGEffect_FlashWhite: ; c80f3 (32:40f3)
	ld de, .white
	jp Functionc80fb

; c80f9 (32:40f9)

.white
	db %11100100 ; 3210
	db %00000000 ; 0000
; c80fb

Functionc80fb: ; c80fb (32:40fb)
	ld a, $1
	ld [BattleAnimTemps], a
	ld hl, $1
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c810a
	dec [hl]
	ret

.asm_c810a
	ld hl, $2
	add hl, bc
	ld a, [hl]
	ld hl, $1
	add hl, bc
	ld [hl], a
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and a
	jr nz, .asm_c8120
	call EndBattleBGEffect
	ret

.asm_c8120
	dec a
	ld [hl], a
	and 1
	ld l, a
	ld h, 0
	add hl, de
	ld a, [hl]
	ld [wcfc7], a
	ret

BattleBGEffect_WhiteHues: ; c812d (32:412d)
	ld de, Unknown_c813d
	call Functionc8d57
	jr c, .asm_c8139
	ld [wcfc7], a
	ret

.asm_c8139
	call EndBattleBGEffect
	ret

; c813d (32:413d)

Unknown_c813d:
	db $e4, $e0, $d0, $ff
; c8141

BattleBGEffect_BlackHues: ; c8141 (32:4141)
	ld de, Unknown_c8151
	call Functionc8d57
	jr c, .asm_c814d
	ld [wcfc7], a
	ret

.asm_c814d
	call EndBattleBGEffect
	ret

; c8151 (32:4151)

Unknown_c8151:
	db $e4, $f4, $f8, $ff
; c8155

BattleBGEffect_AlternateHues: ; c8155 (32:4155)
	ld de, Unknown_c8168
	call Functionc8d57
	jr c, .asm_c8164
	ld [wcfc7], a
	ld [wcfc9], a
	ret

.asm_c8164
	call EndBattleBGEffect
	ret

; c8168 (32:4168)

Unknown_c8168:
	db $e4, $f8, $fc, $f8, $e4, $90, $40, $90, $fe
; c8171

BattleBGEffect_06: ; c8171 (32:4171)
	call Functionc9059
	jr nz, .asm_c817b
	ld de, Unknown_c8185
	jr .asm_c817e
.asm_c817b
	ld de, Unknown_c8188
.asm_c817e
	call Functionc8d57
	ld [wcfc8], a
	ret

; c8185 (32:4185)

Unknown_c8185:
	db $e4, $90, $fe
; c8188

Unknown_c8188:
	db $f0, $c0, $fe
; c818b

BattleBGEffect_07: ; c818b (32:418b)
	call Functionc9059
	jr nz, .asm_c8195
	ld de, Unknown_c819f
	jr .asm_c8198
.asm_c8195
	ld de, Unknown_c81a2
.asm_c8198
	call Functionc8d57
	ld [wcfc8], a
	ret

; c819f (32:419f)

Unknown_c819f:
	db $e4, $d8, $fe
; c81a2

Unknown_c81a2:
	db $f0, $cc, $fe
; c81a5

BattleBGEffect_08: ; c81a5 (32:41a5)
	ld de, Unknown_c81af
	call Functionc8d57
	ld [wcfc7], a
	ret

; c81af (32:41af)

Unknown_c81af:
	db $1b, $63, $87, $fe
; c81b3

BattleBGEffect_HideMon: ; c81b3 (32:41b3)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc81c0
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc81e3


Functionc81c0: ; c81c0 (32:41c0)
	call Functionc80e5
	push bc
	call Functionc9038
	jr nz, .six_by_six
	hlcoord 12, 0
	lb bc, 7, 7
	jr .got_dims
.six_by_six
	hlcoord 2, 6
	lb bc, 6, 6
.got_dims
	call ClearBox
	pop bc
	xor a
	ld [hBGMapThird], a
	ld a, $1
	ld [hBGMapMode], a
	ret

Functionc81e3: ; c81e3 (32:41e3)
	xor a
	ld [hBGMapMode], a
	call EndBattleBGEffect
	ret

BattleBGEffect_ShowMon: ; c81ea (32:41ea)
	call Functionc9042
	jr z, .asm_c81f3
	call EndBattleBGEffect
	ret

.asm_c81f3
	call Functionc9038
	jr nz, .six_by_six
	ld de, Unknown_c8210
	jr .got_dims
.six_by_six
	ld de, Unknown_c820c
.got_dims
	ld a, e
	ld [BattleAnimTemps + 1], a
	ld a, d
	ld [BattleAnimTemps + 2], a
	call Functionc83ed
	ret

; c820c (32:420c)

Unknown_c820c:
	db $00, $31, $00
	db $ff
; c8210

Unknown_c8210:
	db $03, $00, $03
	db $ff
; c8214

BattleBGEffect_FeetFollow: ; c8214 (32:4214)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8223
	dw Functionc825a
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc827a


Functionc8223: ; c8223 (32:4223)
	call Functionc9042
	jr z, .asm_c8230
	ld hl, w5_d40e
	inc [hl]
	call EndBattleBGEffect
	ret

.asm_c8230
	call Functionc80e5
	push bc
	call Functionc9038
	jr nz, .asm_c8242
	ld a, $b8
	ld [BattleAnimTemps], a
	ld a, $84
	jr .asm_c8249
.asm_c8242
	ld a, $b9
	ld [BattleAnimTemps], a
	ld a, $30
.asm_c8249
	ld [BattleAnimTemps + 1], a
	ld a, $40
	ld [BattleAnimTemps + 2], a
	xor a
	ld [BattleAnimTemps + 3], a
	call _QueueBattleAnimation
	pop bc
	ret

Functionc825a: ; c825a (32:425a)
	call Functionc80e5
	push bc
	call Functionc9038
	jr nz, .asm_c826b
	hlcoord 12, 6
	ld bc, $107
	jr .asm_c8271
.asm_c826b
	hlcoord 2, 6
	lb bc, 1, 6
.asm_c8271
	call ClearBox
	ld a, $1
	ld [hBGMapMode], a
	pop bc
	ret

Functionc827a: ; c827a (32:427a)
	xor a
	ld [hBGMapMode], a
	call EndBattleBGEffect
	ret

BattleBGEffect_HeadFollow: ; c8281 (32:4281)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8290
	dw Functionc82c7
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc82e7


Functionc8290: ; c8290 (32:4290)
	call Functionc9042
	jr z, .asm_c829d
	ld hl, w5_d40e
	inc [hl]
	call EndBattleBGEffect
	ret

.asm_c829d
	call Functionc80e5
	push bc
	call Functionc9038
	jr nz, .asm_c82af
	ld a, $ba
	ld [BattleAnimTemps], a
	ld a, $84
	jr .asm_c82b6
.asm_c82af
	ld a, $bb
	ld [BattleAnimTemps], a
	ld a, $30
.asm_c82b6
	ld [BattleAnimTemps + 1], a
	ld a, $40
	ld [BattleAnimTemps + 2], a
	xor a
	ld [BattleAnimTemps + 3], a
	call _QueueBattleAnimation
	pop bc
	ret

Functionc82c7: ; c82c7 (32:42c7)
	call Functionc80e5
	push bc
	call Functionc9038
	jr nz, .asm_c82d8
	hlcoord 12, 5
	ld bc, $207
	jr .asm_c82de
.asm_c82d8
	hlcoord 2, 6
	lb bc, 2, 6
.asm_c82de
	call ClearBox
	ld a, $1
	ld [hBGMapMode], a
	pop bc
	ret

Functionc82e7: ; c82e7 (32:42e7)
	xor a
	ld [hBGMapMode], a
	call EndBattleBGEffect
	ret

_QueueBattleAnimation: ; c82ee (32:42ee)
	callab QueueBattleAnimation
	ret

BattleBGEffect_27: ; c82f5 (32:42f5)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8302
	dw Functionc831d
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc8365


Functionc8302: ; c8302 (32:4302)
	call Functionc80e5
	call Functionc9038
	ld [hl], a
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c8315
	ld a, $9
	jr .asm_c8317
.asm_c8315
	ld a, $8
.asm_c8317
	ld hl, $3
	add hl, bc
	ld [hl], a
	ret

Functionc831d: ; c831d (32:431d)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c833e
	hlcoord 0, 6
	ld de, $806
.asm_c832b
	push de
	push hl
.asm_c832d
	inc hl
	ld a, [hld]
	ld [hli], a
	dec d
	jr nz, .asm_c832d
	pop hl
	ld de, $14
	add hl, de
	pop de
	dec e
	jr nz, .asm_c832b
	jr .asm_c8355
.asm_c833e
	hlcoord 19, 0
	ld de, $807
.asm_c8344
	push de
	push hl
.asm_c8346
	dec hl
	ld a, [hli]
	ld [hld], a
	dec d
	jr nz, .asm_c8346
	pop hl
	ld de, $14
	add hl, de
	pop de
	dec e
	jr nz, .asm_c8344
.asm_c8355
	xor a
	ld [hBGMapThird], a
	ld a, $1
	ld [hBGMapMode], a
	call Functionc80e5
	ld hl, $3
	add hl, bc
	dec [hl]
	ret

Functionc8365: ; c8365 (32:4365)
	xor a
	ld [hBGMapMode], a
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c8377
	ld hl, $1
	add hl, bc
	ld [hl], $1
	ret

.asm_c8377
	call EndBattleBGEffect
	ret

BattleBGEffect_EnterMon: ; c837b (32:437b)
	call Functionc9038
	jr nz, .asm_c8385
	ld de, Unknown_c839e
	jr .asm_c8388
.asm_c8385
	ld de, Unknown_c8394
.asm_c8388
	ld a, e
	ld [BattleAnimTemps + 1], a
	ld a, d
	ld [BattleAnimTemps + 2], a
	call Functionc83ed
	ret

; c8394 (32:4394)

Unknown_c8394:
	db $02, $31, $02
	db $01, $31, $01
	db $00, $31, $00
	db $ff
; c839e

Unknown_c839e:
	db $05, $00, $05
	db $04, $00, $04
	db $03, $00, $03
	db $ff
; c83a8

BattleBGEffect_ReturnMon: ; c83a8 (32:43a8)
	call Functionc9038
	jr nz, .asm_c83b2
	ld de, Unknown_c83d7
	jr .asm_c83b5
.asm_c83b2
	ld de, Unknown_c83c1
.asm_c83b5
	ld a, e
	ld [BattleAnimTemps + 1], a
	ld a, d
	ld [BattleAnimTemps + 2], a
	call Functionc83ed
	ret

; c83c1 (32:43c1)

Unknown_c83c1:
	db $00, $31, $00
	db $fe, $66, $00
	db $01, $31, $01
	db $fe, $44, $01
	db $02, $31, $02
	db $fe, $22, $02
	db $fd, $00, $00
	db $ff
; c83d7

Unknown_c83d7:
	db $03, $00, $03
	db $fe, $77, $03
	db $04, $00, $04
	db $fe, $55, $04
	db $05, $00, $05
	db $fe, $33, $05
	db $fd, $00, $00
	db $ff
; c83ed

Functionc83ed: ; c83ed (32:43ed)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc83fa
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc842a
	dw Functionc8434


Functionc83fa: ; c83fa (32:43fa)
	ld hl, $3
	add hl, bc
	ld e, [hl]
	ld d, $0
	inc [hl]
	ld a, [BattleAnimTemps + 1]
	ld l, a
	ld a, [BattleAnimTemps + 2]
	ld h, a
rept 3
	add hl, de
endr
	ld a, [hl]
	cp $ff
	jr z, Functionc8434
	cp $fe
	jr z, .asm_c8425
	cp $fd
	jr z, .asm_c841d
	call Functionc8458
.asm_c841d
	call Functionc80e5
	ld a, $1
	ld [hBGMapMode], a
	ret

.asm_c8425
	call Functionc843b
	jr Functionc83fa

Functionc842a: ; c842a (32:442a)
	xor a
	ld [hBGMapMode], a
	ld hl, $1
	add hl, bc
	ld [hl], $0
	ret

Functionc8434: ; c8434 (32:4434)
	xor a
	ld [hBGMapMode], a
	call EndBattleBGEffect
	ret

Functionc843b: ; c843b (32:443b)
	push bc
	inc hl
	ld a, [hli]
	ld b, a
	and $f
	ld c, a
	ld a, b
	swap a
	and $f
	ld b, a
	ld e, [hl]
	ld d, 0
	ld hl, Unknown_c849c
rept 2
	add hl, de
endr
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call ClearBox
	pop bc
	ret

Functionc8458: ; c8458 (32:4458)
	push bc
	push hl
	ld e, [hl]
	ld d, 0
	ld hl, Unknown_c84a8
rept 3
	add hl, de
endr
	ld a, [hli]
	ld b, a
	and $f
	ld c, a
	ld a, b
	swap a
	and $f
	ld b, a
	ld e, [hl]
	inc hl
	ld d, [hl]
	pop hl
	inc hl
	ld a, [hli]
	ld [BattleAnimTemps], a
	push de
	ld e, [hl]
	ld d, 0
	ld hl, Unknown_c849c
rept 2
	add hl, de
endr
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop de
.asm_c8484
	push bc
	push hl
	ld a, [BattleAnimTemps]
	ld b, a
.asm_c848a
	ld a, [de]
	add b
	ld [hli], a
	inc de
	dec c
	jr nz, .asm_c848a
	pop hl
	ld bc, $14
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_c8484
	pop bc
	ret

; c849c (32:449c)

Unknown_c849c: ; c849c
	dwcoord  2,  6
	dwcoord  3,  8
	dwcoord  4, 10
	dwcoord 12,  0
	dwcoord 13,  2
	dwcoord 14,  4
; c84a8

Unknown_c84a8: ; c84a8
	dbw $66, Unknown_c84ba
	dbw $44, Unknown_c84de
	dbw $22, Unknown_c84ee
	dbw $77, Unknown_c84f2
	dbw $55, Unknown_c8523
	dbw $33, Unknown_c853c
; c84ba

Unknown_c84ba: ; c84ba
	db $00, $06, $0c, $12, $18, $1e
	db $01, $07, $0d, $13, $19, $1f
	db $02, $08, $0e, $14, $1a, $20
	db $03, $09, $0f, $15, $1b, $21
	db $04, $0a, $10, $16, $1c, $22
	db $05, $0b, $11, $17, $1d, $23
; c84de

Unknown_c84de: ; c84de
	db $00, $0c, $12, $1e
	db $02, $0e, $14, $20
	db $03, $0f, $15, $21
	db $05, $11, $17, $23
; c84ee

Unknown_c84ee: ; c84ee
	db $00, $1e
	db $05, $23
; c84f2

Unknown_c84f2: ; c84f2
	db $00, $07, $0e, $15, $1c, $23, $2a
	db $01, $08, $0f, $16, $1d, $24, $2b
	db $02, $09, $10, $17, $1e, $25, $2c
	db $03, $0a, $11, $18, $1f, $26, $2d
	db $04, $0b, $12, $19, $20, $27, $2e
	db $05, $0c, $13, $1a, $21, $28, $2f
	db $06, $0d, $14, $1b, $22, $29, $30
; c8523

Unknown_c8523: ; c8523
	db $00, $07, $15, $23, $2a
	db $01, $08, $16, $24, $2b
	db $03, $0a, $18, $26, $2d
	db $05, $0c, $1a, $28, $2f
	db $06, $0d, $1b, $29, $30
; c853c

Unknown_c853c: ; c853c
	db $00, $15, $2a
	db $03, $18, $2d
	db $06, $1b, $30
; c8545

BattleBGEffect_Surf: ; c8545 (32:4545)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc854e
	dw Functionc8557
	dw Functionc8561


Functionc854e: ; c854e (32:454e)
	call Functionc80e5
	ld de, $202
	call Functionc8f69

Functionc8557: ; c8557 (32:4557)
	ld a, [hLCDStatCustom]
	and a
	ret z
	push bc
	call Functionc8565
	pop bc
	ret

Functionc8561: ; c8561 (32:4561)
	call Functionc8f0a
	ret

Functionc8565: ; c8565 (32:4565)
	ld hl, w5_d422
	ld de, w5_d422 + 1
	ld c, $3f
	ld a, [hl]
	push af
.asm_c856f
	ld a, [de]
	inc de
	ld [hli], a
	dec c
	jr nz, .asm_c856f
	pop af
	ld [hl], a
	ld de, LYOverridesBackup
	ld hl, w5_d422
	ld bc, $0
.asm_c8580
	ld a, [hLCDStatCustom + 1]
	cp e
	jr nc, .asm_c858b
	push hl
	add hl, bc
	ld a, [hl]
	pop hl
	jr .asm_c858c
.asm_c858b
	xor a
.asm_c858c
	ld [de], a
	ld a, c
	inc a
	and $3f
	ld c, a
	inc de
	ld a, e
	cp $5f
	jr c, .asm_c8580
	ret

BattleBGEffect_Whirlpool: ; c8599 (32:4599)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc85a2
	dw Functionc85ba
	dw Functionc85be


Functionc85a2: ; c85a2 (32:45a2)
	call Functionc80e5
	call Functionc8eca
	ld a, $42
	ld [hLCDStatCustom], a
	xor a
	ld [hLCDStatCustom + 1], a
	ld a, $5e
	ld [hLCDStatCustom + 2], a
	ld de, $202
	call Functionc8f2e
	ret

Functionc85ba: ; c85ba (32:45ba)
	call Functionc8fef
	ret

Functionc85be: ; c85be (32:45be)
	call Functionc8f0a
	ret

BattleBGEffect_30: ; c85c2 (32:45c2)
	call Functionc8eca
	ld a, $42
	call Functionc8ede
	call EndBattleBGEffect
	ret

BattleBGEffect_31: ; c85ce (32:45ce)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld e, a
	add $4
	ld [hl], a
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and $f0
	swap a
	xor $ff
	add $4
	ld d, a
	ld hl, $1
	add hl, bc
	ld a, [hl]
	ld [BattleAnimTemps], a
	ld hl, $2
	add hl, bc
	ld a, [hl]
	cp $20
	jr nc, .asm_c85fc
rept 2
	inc [hl]
endr
	call Functionc8f9a
	ret

.asm_c85fc
	call Functionc8eca
	call EndBattleBGEffect
	ret

BattleBGEffect_32: ; c8603 (32:4603)
	call Functionc8f0a
	ret

BattleBGEffect_Psychic: ; c8607 (32:4607)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8610
	dw Functionc862e
	dw Functionc863b


Functionc8610: ; c8610 (32:4610)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	ld [hLCDStatCustom], a
	xor a
	ld [hLCDStatCustom + 1], a
	ld a, $5f
	ld [hLCDStatCustom + 2], a
	ld de, $605
	call Functionc8f2e
	ld hl, $3
	add hl, bc
	ld [hl], $0
	ret

Functionc862e: ; c862e (32:462e)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	inc [hl]
	and $3
	ret nz
	call Functionc8fef
	ret

Functionc863b: ; c863b (32:463b)
	call Functionc8f0a
	ret

BattleBGEffect_Teleport: ; c863f (32:463f)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8648
	dw Functionc865a
	dw Functionc865e


Functionc8648: ; c8648 (32:4648)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld de, $605
	call Functionc8f2e
	ret

Functionc865a: ; c865a (32:465a)
	call Functionc8fef
	ret

Functionc865e: ; c865e (32:465e)
	call Functionc8f0a
	ret

BattleBGEffect_NightShade: ; c8662 (32:4662)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc866b
	dw Functionc8681
	dw Functionc8685


Functionc866b: ; c866b (32:466b)
	call Functionc80e5
	call Functionc8eca
	ld a, $42
	call Functionc8ede
	ld hl, $3
	add hl, bc
	ld e, [hl]
	ld d, $2
	call Functionc8f2e
	ret

Functionc8681: ; c8681 (32:4681)
	call Functionc8fef
	ret

Functionc8685: ; c8685 (32:4685)
	call Functionc8f0a
	ret

BattleBGEffect_DoubleTeam: ; c8689 (32:4689)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8698
	dw Functionc86af
	dw Functionc86cf
	dw Functionc86bd
	dw Functionc86e9
	dw Functionc8705


Functionc8698: ; c8698 (32:4698)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld a, [hLCDStatCustom + 2]
	inc a
	ld [hLCDStatCustom + 2], a
	ld hl, $2
	add hl, bc
	ld [hl], $0
	ret

Functionc86af: ; c86af (32:46af)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	cp $10
	jr nc, asm_c86cb
	inc [hl]
	call Functionc86ea
	ret

Functionc86bd: ; c86bd (32:46bd)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	cp $ff
	jr z, asm_c86cb
	dec [hl]
	call Functionc86ea
	ret

asm_c86cb: ; c86cb (32:46cb)
	call Functionc80e5
	ret

Functionc86cf: ; c86cf (32:46cf)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	ld d, $2
	call Functionc905d
	ld hl, $3
	add hl, bc
	add [hl]
	call Functionc86ea
	ld hl, $2
	add hl, bc
	ld a, [hl]
	add $4
	ld [hl], a

Functionc86e9: ; c86e9 (32:46e9)
	ret

Functionc86ea: ; c86ea (32:46ea)
	ld e, a
	xor $ff
	inc a
	ld d, a
	ld h, $d2
	ld a, [hLCDStatCustom + 1]
	ld l, a
	ld a, [hLCDStatCustom + 2]
	sub l
	srl a
	push af
.asm_c86fa
	ld [hl], e
	inc hl
	ld [hl], d
	inc hl
	dec a
	jr nz, .asm_c86fa
	pop af
	ret nc
	ld [hl], e
	ret

Functionc8705: ; c8705 (32:4705)
	call Functionc8f0a
	ret

BattleBGEffect_AcidArmor: ; c8709 (32:4709)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8712
	dw Functionc8732
	dw Functionc875d


Functionc8712: ; c8712 (32:4712)
	call Functionc80e5
	call Functionc8eca
	ld a, $42
	call Functionc8ede
	ld hl, $3
	add hl, bc
	ld e, [hl]
	ld d, $2
	call Functionc8f2e
	ld h, $d2
	ld a, [hLCDStatCustom + 2]
	ld l, a
	ld [hl], $0
	dec l
	ld [hl], $0
	ret

Functionc8732: ; c8732 (32:4732)
	ld a, [hLCDStatCustom + 2]
	ld l, a
	ld h, $d2
	ld e, l
	ld d, h
	dec de
.asm_c873a
	ld a, [de]
	dec de
	ld [hld], a
	ld a, [hLCDStatCustom + 1]
	cp l
	jr nz, .asm_c873a
	ld [hl], $90
	ld a, [hLCDStatCustom + 2]
	ld l, a
	ld a, [hl]
	cp $1
	jr c, .asm_c8752
	cp $90
	jr z, .asm_c8752
	ld [hl], $0
.asm_c8752
	dec l
	ld a, [hl]
	cp $2
	ret c
	cp $90
	ret z
	ld [hl], $0
	ret

Functionc875d: ; c875d (32:475d)
	call Functionc8f0a
	ret

BattleBGEffect_21: ; c8761 (32:4761)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc876a
	dw Functionc8781
	dw Functionc87a3


Functionc876a: ; c876a (32:476a)
	call Functionc80e5
	call Functionc8eca
	ld a, $42
	call Functionc8ede
	ld a, [hLCDStatCustom + 2]
	inc a
	ld [hLCDStatCustom + 2], a
	ld hl, $2
	add hl, bc
	ld [hl], $1
	ret

Functionc8781: ; c8781 (32:4781)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and $3f
	ld d, a
	ld hl, $2
	add hl, bc
	ld a, [hl]
	cp d
	ret nc
	call Functionc901b
	ld hl, $3
	add hl, bc
	ld a, [hl]
	rlca
	rlca
	and $3
	ld hl, $2
	add hl, bc
	add [hl]
	ld [hl], a
	ret

Functionc87a3: ; c87a3 (32:47a3)
	call Functionc8f0a
	ret

BattleBGEffect_23: ; c87a7 (32:47a7)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc87b2
	dw Functionc87cf
	dw Functionc87de
	dw Functionc8801


Functionc87b2: ; c87b2 (32:47b2)
	call Functionc80e5
	call Functionc8eca
	ld a, $42
	call Functionc8ede
	ld a, [hLCDStatCustom + 2]
	inc a
	ld [hLCDStatCustom + 2], a
	ld hl, $2
	add hl, bc
	ld [hl], $2
	ld hl, $3
	add hl, bc
	ld [hl], $0
	ret

Functionc87cf: ; c87cf (32:47cf)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c87d9
	dec [hl]
	ret

.asm_c87d9
	ld [hl], $10
	call Functionc80e5

Functionc87de: ; c87de (32:47de)
	ld a, [hLCDStatCustom + 1]
	ld l, a
	ld a, [hLCDStatCustom + 2]
	sub l
	dec a
	ld hl, $2
	add hl, bc
	cp [hl]
	ret c
	ld a, [hl]
	push af
	and $7
	jr nz, .asm_c87f6
	ld hl, $1
	add hl, bc
	dec [hl]
.asm_c87f6
	pop af
	call Functionc901b
	ld hl, $2
	add hl, bc
rept 2
	inc [hl]
endr
	ret

Functionc8801: ; c8801 (32:4801)
	call Functionc8f0a
	ret

BattleBGEffect_Tackle: ; c8805 (32:4805)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8810
	dw Functionc8869
	dw Functionc8888
	dw Functionc8833


Functionc8810: ; c8810 (32:4810)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld a, [hLCDStatCustom + 2]
	inc a
	ld [hLCDStatCustom + 2], a
	ld hl, $3
	add hl, bc
	ld [hl], $0
	call Functionc9038
	jr nz, .asm_c882f
	ld a, $2
	jr .asm_c8831
.asm_c882f
	ld a, $fe
.asm_c8831
	ld [hl], a
	ret

Functionc8833: ; c8833 (32:4833)
	call Functionc8f0a
	ret

BattleBGEffect_25: ; c8837 (32:4837)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8842
	dw Functionc8869
	dw Functionc8888
	dw Functionc8865


Functionc8842: ; c8842 (32:4842)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ef4
	ld a, [hLCDStatCustom + 2]
	inc a
	ld [hLCDStatCustom + 2], a
	ld hl, $3
	add hl, bc
	ld [hl], $0
	call Functionc9038
	jr nz, .asm_c8861
	ld a, $2
	jr .asm_c8863
.asm_c8861
	ld a, $fe
.asm_c8863
	ld [hl], a
	ret

Functionc8865: ; c8865 (32:4865)
	call Functionc8f0a
	ret

Functionc8869: ; c8869 (32:4869)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	cp $f8
	jr z, .asm_c8876
	cp $8
	jr nz, .asm_c8879
.asm_c8876
	call Functionc80e5
.asm_c8879
	call Functionc88a5
	ld hl, $2
	add hl, bc
	ld a, [hl]
	ld hl, $3
	add hl, bc
	add [hl]
	ld [hl], a
	ret

Functionc8888: ; c8888 (32:4888)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and a
	jr nz, .asm_c8893
	call Functionc80e5
.asm_c8893
	call Functionc88a5
	ld hl, $2
	add hl, bc
	ld a, [hl]
	xor $ff
	inc a
	ld hl, $3
	add hl, bc
	add [hl]
	ld [hl], a
	ret

Functionc88a5: ; c88a5 (32:48a5)
	push af
	ld a, [FXAnimIDHi] ; FXAnimIDHi
	or a
	jr nz, .asm_c88b3
	ld a, [FXAnimIDLo] ; FXAnimID
	cp ROLLOUT
	jr z, .asm_c88b7
.asm_c88b3
	pop af
	jp Functionc900b

.asm_c88b7
	ld a, [hLCDStatCustom + 1]
	ld d, a
	ld a, [hLCDStatCustom + 2]
	sub d
	ld d, a
	ld h, LYOverridesBackup / $100
	ld a, [hSCY]
	or a
	jr nz, .asm_c88d0
	ld a, [hLCDStatCustom + 1]
	or a
	jr z, .asm_c88d6
	dec a
	ld l, a
	ld [hl], $0
	jr .asm_c88d6
.asm_c88d0
	ld a, [hLCDStatCustom + 2]
	dec a
	ld l, a
	ld [hl], $0
.asm_c88d6
	ld a, [hSCY]
	ld l, a
	ld a, [hLCDStatCustom + 1]
	sub l
	jr nc, .asm_c88e0
	xor a
	dec d
.asm_c88e0
	ld l, a
	pop af
.asm_c88e2
	ld [hli], a
	dec d
	jr nz, .asm_c88e2
	ret

BattleBGEffect_2d: ; c88e7 (32:48e7)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc88f6
	dw Functionc8869
	dw Functionc8888
	dw Functionc88f2


Functionc88f2: ; c88f2 (32:48f2)
	call Functionc8f0a
	ret

Functionc88f6: ; c88f6 (32:48f6)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld a, [hLCDStatCustom + 2]
	inc a
	ld [hLCDStatCustom + 2], a
	ld hl, $3
	add hl, bc
	ld [hl], $0
	call Functionc9038
	jr nz, .asm_c8915
	ld a, $fe
	jr .asm_c8917
.asm_c8915
	ld a, $2
.asm_c8917
	ld [hl], a
	ret

BattleBGEffect_2f: ; c8919 (32:4919)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc88f6
	dw Functionc8869
	dw Functionc8929
	dw Functionc8888
	dw Functionc8926


Functionc8926: ; c8926 (32:4926)
	call Functionc8f0a

Functionc8929: ; c8929 (32:4929)
	ret

BattleBGEffect_26: ; c892a (32:492a)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8933
	dw Functionc894a
	dw Functionc8960


Functionc8933: ; c8933 (32:4933)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld a, [hLCDStatCustom + 2]
	inc a
	ld [hLCDStatCustom + 2], a
	ld hl, $3
	add hl, bc
	ld [hl], $0
	ret

Functionc894a: ; c894a (32:494a)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld d, $8
	call Functionc905d
	call Functionc900b
	ld hl, $3
	add hl, bc
	ld a, [hl]
	add $4
	ld [hl], a
	ret

Functionc8960: ; c8960 (32:4960)
	call Functionc8f0a
	ret

BattleBGEffect_2c: ; c8964 (32:4964)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc896d
	dw Functionc8985
	dw Functionc89b1


Functionc896d: ; c896d (32:496d)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld a, [hLCDStatCustom + 2]
	inc a
	ld [hLCDStatCustom + 2], a
	xor a
	ld hl, $2
	add hl, bc
	ld [hli], a
	ld [hl], a
	ret

Functionc8985: ; c8985 (32:4985)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld d, $6
	call Functionc905d
	push af
	ld hl, $2
	add hl, bc
	ld a, [hl]
	ld d, $2
	call Functionc905d
	ld e, a
	pop af
	add e
	call Functionc900b
	ld hl, $2
	add hl, bc
	ld a, [hl]
	add $8
	ld [hl], a
	ld hl, $3
	add hl, bc
	ld a, [hl]
	add $2
	ld [hl], a
	ret

Functionc89b1: ; c89b1 (32:49b1)
	call Functionc8f0a
	ret

BattleBGEffect_28: ; c89b5 (32:49b5)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc89be
	dw Functionc89ca
	dw Functionc89da


Functionc89be: ; c89be (32:49be)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ret

Functionc89ca: ; c89ca (32:49ca)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	cp $20
	ret nc
	inc [hl]
	ld d, a
	ld e, $4
	call Functionc8f2e
	ret

Functionc89da: ; c89da (32:49da)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c89ea
	dec [hl]
	ld d, a
	ld e, $4
	call Functionc8f2e
	ret

.asm_c89ea
	call Functionc8f0a
	ret

BattleBGEffect_22: ; c89ee (32:49ee)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc89f7
	dw Functionc8a14
	dw Functionc8a36


Functionc89f7: ; c89f7 (32:49f7)
	call Functionc80e5
	call Functionc8eca
	ld a, $42
	call Functionc8ef4
	ld a, [hLCDStatCustom + 2]
	inc a
	ld [hLCDStatCustom + 2], a
	ld hl, $2
	add hl, bc
	ld [hl], $1
	ld hl, $3
	add hl, bc
	ld [hl], $20
	ret

Functionc8a14: ; c8a14 (32:4a14)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	cp $38
	ret nc
	push af
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld d, $10
	call Functionc9066
	add $10
	ld d, a
	pop af
	add d
	call Functionc901b
	ld hl, $3
	add hl, bc
rept 2
	inc [hl]
endr
	ret

Functionc8a36: ; c8a36 (32:4a36)
	call Functionc8f0a
	ret

BattleBGEffect_2a: ; c8a3a (32:4a3a)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8a49
	dw Functionc8a6f
	dw Functionc8a70
	dw Functionc8a88
	dw Functionc8a6f
	dw Functionc8aac


Functionc8a49: ; c8a49 (32:4a49)
	call Functionc80e5
	ld a, $e4
	call Functionc8ecb
	ld a, $47
	call Functionc8ede
	ld a, [hLCDStatCustom + 2]
	inc a
	ld [hLCDStatCustom + 2], a
	ld a, [hLCDStatCustom + 1]
	ld l, a
	ld h, $d2
.asm_c8a60
	ld a, [hLCDStatCustom + 2]
	cp l
	jr z, .asm_c8a69
	xor a
	ld [hli], a
	jr .asm_c8a60
.asm_c8a69
	ld hl, $3
	add hl, bc
	ld [hl], $0

Functionc8a6f: ; c8a6f (32:4a6f)
	ret

Functionc8a70: ; c8a70 (32:4a70)
	call Functionc8ab0
	jr nc, .asm_c8a79
	call Functionc8a9a
	ret

.asm_c8a79
	ld hl, $3
	add hl, bc
	ld [hl], $0
	ld a, [hLCDStatCustom + 1]
	inc a
	ld [hLCDStatCustom + 1], a
	call Functionc80e5
	ret

Functionc8a88: ; c8a88 (32:4a88)
	call Functionc8ab0
	jr nc, .asm_c8a96
	call Functionc8a9a
	ld a, [hLCDStatCustom + 2]
	dec a
	ld l, a
	ld [hl], e
	ret

.asm_c8a96
	call Functionc80e5
	ret

Functionc8a9a: ; c8a9a (32:4a9a)
	ld e, a
	ld a, [hLCDStatCustom + 1]
	ld l, a
	ld a, [hLCDStatCustom + 2]
	sub l
	srl a
	ld h, $d2
.asm_c8aa5
	ld [hl], e
rept 2
	inc hl
endr
	dec a
	jr nz, .asm_c8aa5
	ret

Functionc8aac: ; c8aac (32:4aac)
	call Functionc8f19
	ret

Functionc8ab0: ; c8ab0 (32:4ab0)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	inc [hl]
	srl a
	srl a
	srl a
	ld e, a
	ld d, 0
	ld hl, Unknown_c8ac7
	add hl, de
	ld a, [hl]
	cp $ff
	ret

; c8ac7 (32:4ac7)

Unknown_c8ac7:
	db $00, $40, $90, $e4, $ff
; c8acc

BattleBGEffect_2b: ; c8acc (32:4acc)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8ad3
	dw Functionc8ae5


Functionc8ad3: ; c8ad3 (32:4ad3)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld hl, $2
	add hl, bc
	ld [hl], $40
	ret

Functionc8ae5: ; c8ae5 (32:4ae5)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c8afc
	dec [hl]
	srl a
	srl a
	srl a
	and $f
	ld d, a
	ld e, a
	call Functionc8f2e
	ret

.asm_c8afc
	call Functionc8f0a
	ret

BattleBGEffect_1c: ; c8b00 (32:4b00)
	ld a, [hCGB]
	and a
	jr nz, asm_c8b7a
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8b0e
	dw Functionc8b22
	dw Functionc8b60


Functionc8b0e: ; c8b0e (32:4b0e)
	call Functionc80e5
	ld a, $e4
	call Functionc8ecb
	ld a, $47
	ld [hLCDStatCustom], a
	xor a
	ld [hLCDStatCustom + 1], a
	ld a, $60
	ld [hLCDStatCustom + 2], a
	ret

Functionc8b22: ; c8b22 (32:4b22)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	inc [hl]
	ld e, a
	and $7
	ret nz
	ld a, e
	and $18
	sla a
	swap a
	sla a
	ld e, a
	ld d, $0
	push bc
	call Functionc9038
	jr nz, .asm_c8b4d
	ld hl, Unknown_c8bd8
	add hl, de
	ld a, [hli]
	ld [wcfc9], a
	ld d, a
	ld e, [hl]
	ld bc, $2f30
	jr .asm_c8b5b
.asm_c8b4d
	ld hl, Unknown_c8be0
	add hl, de
	ld d, [hl]
	inc hl
	ld a, [hl]
	ld [wcfc9], a
	ld e, a
	ld bc, $3728
.asm_c8b5b
	call Functionc8b6c
	pop bc
	ret

Functionc8b60: ; c8b60 (32:4b60)
	call Functionc8f19
	ld a, $e4
	ld [wcfc7], a
	ld [wcfc9], a
	ret

Functionc8b6c: ; c8b6c (32:4b6c)
	ld hl, LYOverridesBackup
.asm_c8b6f
	ld [hl], d
	inc hl
	dec b
	jr nz, .asm_c8b6f
.asm_c8b74
	ld [hl], e
	inc hl
	dec c
	jr nz, .asm_c8b74
	ret

asm_c8b7a: ; c8b7a (32:4b7a)
	ld de, Jumptable_c8b81
	call Functionc80ca
	jp [hl]

; c8b81 (32:4b81)

Jumptable_c8b81: ; c8b81
	dw Functionc8b87
	dw Functionc8b91
	dw Functionc8bca
; c8b87

Functionc8b87: ; c8b87
	call Functionc80e5
	ld hl, $3
	add hl, bc
	ld [hl], $0
	ret

; c8b91

Functionc8b91: ; c8b91
	ld hl, $3
	add hl, bc
	ld a, [hl]
	inc [hl]
	ld e, a
	and $7
	ret nz
	ld a, e
	and $18
	sla a
	swap a
	sla a
	ld e, a
	ld d, 0
	call Functionc9038
	jr nz, .asm_c8bbb
	ld hl, Unknown_c8bd8
	add hl, de
	ld a, [hli]
	push hl
	call Functionc8e7f
	pop hl
	ld a, [hl]
	call Functionc8e52
	ret

.asm_c8bbb
	ld hl, Unknown_c8bd8
	add hl, de
	ld a, [hli]
	push hl
	call Functionc8e52
	pop hl
	ld a, [hl]
	call Functionc8e7f
	ret

; c8bca

Functionc8bca: ; c8bca
	ld a, $e4
	call Functionc8e52
	ld a, $e4
	call Functionc8e7f
	call EndBattleBGEffect
	ret

; c8bd8

Unknown_c8bd8: ; c8bd8
	db $e4, $e4
	db $f8, $90
	db $fc, $40
	db $f8, $90
; c8be0

Unknown_c8be0: ; c8be0
	db $e4, $e4
	db $90, $f8
	db $40, $fc
	db $90, $f8
; c8be8

BattleBGEffect_RapidFlash: ; c8be8 (32:4be8)
	ld de, Unknown_c8bef
	call Functionc8d77
	ret

; c8bef (32:4bef)

Unknown_c8bef: ; c8bef
	db $e4, $6c, $fe
; c8bf2

BattleBGEffect_16: ; c8bf2 (32:4bf2)
	ld de, Unknown_c8bf9
	call Functionc8d77
	ret

; c8bf9 (32:4bf9)

Unknown_c8bf9: ; c8bf9
	db $e4, $90, $40, $ff
; c8bfd

BattleBGEffect_17: ; c8bfd (32:4bfd)
	ld de, Unknown_c8c04
	call Functionc8d77
	ret

; c8c04 (32:4c04)

Unknown_c8c04: ; c8c04
	db $e4, $f8, $fc, $ff
; c8c08

BattleBGEffect_18: ; c8c08 (32:4c08)
	ld de, Unknown_c8c0f
	call Functionc8d77
	ret

; c8c0f (32:4c0f)

Unknown_c8c0f: ; c8c0f
	db $e4, $90, $40, $90, $fe
; c8c14

BattleBGEffect_19: ; c8c14 (32:4c14)
	ld de, Unknown_c8c1b
	call Functionc8d77
	ret

; c8c1b (32:4c1b)

Unknown_c8c1b: ; c8c1b
	db $e4, $f8, $fc, $f8, $fe
; c8c20

BattleBGEffect_1a: ; c8c20 (32:4c20)
	ld de, Unknown_c8c27
	call Functionc8d77
	ret

; c8c27 (32:4c27)

Unknown_c8c27: ; c8c27
	db $e4, $f8, $fc, $f8, $e4, $90, $40, $90, $fe
; c8c30

BattleBGEffect_1b: ; c8c30 (32:4c30)
	ld de, Unknown_c8c37
	call Functionc8d77
	ret

; c8c37 (32:4c37)

Unknown_c8c37:
	db $e4, $fc, $e4, $00, $fe
; c8c3c

BattleBGEffect_1d: ; c8c3c (32:4c3c)
	ld de, Unknown_c8c43
	call Functionc8d77
	ret

; c8c43 (32:4c43)

Unknown_c8c43:
	db $e4, $90, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $90, $e4, $ff
; c8c55

BattleBGEffect_1e: ; c8c55 (32:4c55)
	ld de, Unknown_c8c5c
	call Functionc8d77
	ret

; c8c5c (32:4c5c)

Unknown_c8c5c:
	db $00, $40, $90, $e4, $ff
; c8c61

BattleBGEffect_VibrateMon: ; c8c61 (32:4c61)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8c68
	dw Functionc8c85


Functionc8c68: ; c8c68 (32:4c68)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld a, [hLCDStatCustom + 2]
	inc a
	ld [hLCDStatCustom + 2], a
	ld hl, $2
	add hl, bc
	ld [hl], $1
	ld hl, $3
	add hl, bc
	ld [hl], $20
	ret

Functionc8c85: ; c8c85 (32:4c85)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c8c9e
	dec [hl]
	and $1
	ret nz
	ld hl, $2
	add hl, bc
	ld a, [hl]
	xor $ff
	inc a
	ld [hl], a
	call Functionc900b
	ret

.asm_c8c9e
	call Functionc8f0a
	ret

BattleBGEffect_WobbleMon: ; c8ca2 (32:4ca2)
	call BattleBGEffects_AnonJumptable
.anon_jumptable
	dw Functionc8cab
	dw Functionc8cc3
	dw Functionc8cdd


Functionc8cab: ; c8cab (32:4cab)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	ld [hLCDStatCustom], a
	xor a
	ld [hLCDStatCustom + 1], a
	ld a, $37
	ld [hLCDStatCustom + 2], a
	ld hl, $3
	add hl, bc
	ld [hl], $0
	ret

Functionc8cc3: ; c8cc3 (32:4cc3)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	cp $40
	jr nc, Functionc8cdd
	ld d, $6
	call Functionc905d
	call Functionc900b
	ld hl, $3
	add hl, bc
	ld a, [hl]
	add $2
	ld [hl], a
	ret

Functionc8cdd: ; c8cdd (32:4cdd)
	call Functionc8f0a
	ret

BattleBGEffect_2e: ; c8ce1 (32:4ce1)
	call Functionc8d0b
	jr c, .asm_c8cea
	bit 7, a
	jr z, .asm_c8ceb
.asm_c8cea
	xor a
.asm_c8ceb
	push af
	call DelayFrame
	pop af
	ld [hSCY], a
	xor $ff
	inc a
	ld [OTPartyMon3SpclAtk], a
	ret

BattleBGEffect_1f: ; c8cf9 (32:4cf9)
	call Functionc8d0b
	jr nc, .asm_c8cff
	xor a
.asm_c8cff
	ld [hSCX], a
	ret

BattleBGEffect_20: ; c8d02 (32:4d02)
	call Functionc8d0b
	jr nc, .asm_c8d08
	xor a
.asm_c8d08
	ld [hSCY], a
	ret

Functionc8d0b: ; c8d0b (32:4d0b)
	ld hl, $1
	add hl, bc
	ld a, [hl]
	and a
	jr nz, .asm_c8d18
	call EndBattleBGEffect
	scf
	ret

.asm_c8d18
	dec [hl]
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and $f
	jr z, .asm_c8d2a
	dec [hl]
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and a
	ret

.asm_c8d2a
	ld a, [hl]
	swap a
	or [hl]
	ld [hl], a
	ld hl, $2
	add hl, bc
	ld a, [hl]
	xor $ff
	inc a
	ld [hl], a
	and a
	ret

BattleBGEffect_35: ; c8d3a (32:4d3a)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	cp $40
	jr nc, .asm_c8d53
	ld d, $6
	call Functionc905d
	ld [hSCX], a
	ld hl, $3
	add hl, bc
	ld a, [hl]
	add $2
	ld [hl], a
	ret

.asm_c8d53
	xor a
	ld [hSCX], a
	ret

Functionc8d57: ; c8d57 (32:4d57)
	ld hl, $1
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c8d69

	dec [hl]
	ld hl, $3
	add hl, bc
	ld a, [hl]
	call Functionc8eb2
	ret

.asm_c8d69
	ld hl, $2
	add hl, bc
	ld a, [hl]
	ld hl, $1
	add hl, bc
	ld [hl], a
	call Functionc8eac
	ret

Functionc8d77: ; c8d77 (32:4d77)
	ld a, [hCGB]
	and a
	jr nz, asm_c8dd4
	push de
	ld de, Jumptable_c8d85
	call Functionc80ca
	pop de
	jp [hl]

Jumptable_c8d85: ; c8d85 (32:4d85)
	dw Functionc8d8b
	dw Functionc8daa
	dw Functionc8dc9


Functionc8d8b: ; c8d8b (32:4d8b)
	call Functionc80e5
	ld a, $e4
	call Functionc8ecb
	ld a, $47
	call Functionc8ede
	ld a, [hLCDStatCustom + 2]
	inc a
	ld [hLCDStatCustom + 2], a
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld [hl], $0
	ld hl, $2
	add hl, bc
	ld [hl], a
	ret

Functionc8daa: ; c8daa (32:4daa)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and $f
	jr z, .asm_c8db5
	dec [hl]
	ret

.asm_c8db5
	ld a, [hl]
	swap a
	or [hl]
	ld [hl], a
	call Functionc8eac
	jr c, .asm_c8dc3
	call Functionc900b
	ret

.asm_c8dc3
	ld hl, $3
	add hl, bc
	dec [hl]
	ret

Functionc8dc9: ; c8dc9 (32:4dc9)
	call Functionc8f19
	ld a, $e4
	ld [rBGP], a
	call EndBattleBGEffect
	ret

asm_c8dd4: ; c8dd4 (32:4dd4)
	push de
	ld de, Jumptable_c8ddd
	call Functionc80ca
	pop de
	jp [hl]

Jumptable_c8ddd: ; c8ddd (32:4ddd)
	dw Functionc8de7
	dw Functionc8e02
	dw Functionc8e21
	dw Functionc8e2a
	dw Functionc8e49


Functionc8de7: ; c8de7 (32:4de7)
	call Functionc9038
	jr nz, .asm_c8df2
	call Functionc80e5
	call Functionc80e5
.asm_c8df2
	call Functionc80e5
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld [hl], $0
	ld hl, $2
	add hl, bc
	ld [hl], a
	ret

Functionc8e02: ; c8e02 (32:4e02)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and $f
	jr z, .asm_c8e0d
	dec [hl]
	ret

.asm_c8e0d
	ld a, [hl]
	swap a
	or [hl]
	ld [hl], a
	call Functionc8eac
	jr c, .asm_c8e1b
	call Functionc8e52
	ret

.asm_c8e1b
	ld hl, $3
	add hl, bc
	dec [hl]
	ret

Functionc8e21: ; c8e21 (32:4e21)
	ld a, $e4
	call Functionc8e52
	call EndBattleBGEffect
	ret

Functionc8e2a: ; c8e2a (32:4e2a)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and $f
	jr z, .asm_c8e35
	dec [hl]
	ret

.asm_c8e35
	ld a, [hl]
	swap a
	or [hl]
	ld [hl], a
	call Functionc8eac
	jr c, .asm_c8e43
	call Functionc8e7f
	ret

.asm_c8e43
	ld hl, $3
	add hl, bc
	dec [hl]
	ret

Functionc8e49: ; c8e49 (32:4e49)
	ld a, $e4
	call Functionc8e7f
	call EndBattleBGEffect
	ret

Functionc8e52: ; c8e52 (32:4e52)
	ld h, a
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld a, h
	push bc
	push af
	ld hl, BGPals ; BGPals
	ld de, UnknBGPals ; wd000
	ld b, a
	ld c, $1
	call CopyPals
	ld hl, OBPals + 8
	ld de, UnknOBPals + 8
	pop af
	ld b, a
	ld c, $1
	call CopyPals
	pop bc
	pop af
	ld [rSVBK], a
	ld a, $1
	ld [hCGBPalUpdate], a
	ret

Functionc8e7f: ; c8e7f (32:4e7f)
	ld h, a
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld a, h
	push bc
	push af
	ld hl, BGPals + 8
	ld de, UnknBGPals + 8
	ld b, a
	ld c, $1
	call CopyPals
	ld hl, OBPals ; OBPals
	ld de, UnknOBPals ; wd040
	pop af
	ld b, a
	ld c, $1
	call CopyPals
	pop bc
	pop af
	ld [rSVBK], a
	ld a, $1
	ld [hCGBPalUpdate], a
	ret

Functionc8eac: ; c8eac (32:4eac)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	inc [hl]

Functionc8eb2: ; c8eb2 (32:4eb2)
	ld l, a
	ld h, $0
	add hl, de
	ld a, [hl]
	cp $ff
	jr z, .asm_c8ec8
	cp $fe
	jr nz, .asm_c8ec6
	ld a, [de]
	ld hl, $3
	add hl, bc
	ld [hl], $0
.asm_c8ec6
	and a
	ret

.asm_c8ec8
	scf
	ret

Functionc8eca: ; c8eca (32:4eca)
	xor a

Functionc8ecb: ; c8ecb (32:4ecb)
	ld hl, LYOverrides ; wd100
	ld e, $99
.asm_c8ed0
	ld [hli], a
	dec e
	jr nz, .asm_c8ed0
	ld hl, LYOverridesBackup
	ld e, $91
.asm_c8ed9
	ld [hli], a
	dec e
	jr nz, .asm_c8ed9
	ret

Functionc8ede: ; c8ede (32:4ede)
	ld [hLCDStatCustom], a
	call Functionc9038
	jr nz, .asm_c8eea
	ld de, $36
	jr .asm_c8eed
.asm_c8eea
	ld de, $2f5e
.asm_c8eed
	ld a, d
	ld [hLCDStatCustom + 1], a
	ld a, e
	ld [hLCDStatCustom + 2], a
	ret

Functionc8ef4: ; c8ef4 (32:4ef4)
	ld [hLCDStatCustom], a
	call Functionc9038
	jr nz, .asm_c8f00
	ld de, $36
	jr .asm_c8f03
.asm_c8f00
	ld de, $2d5e
.asm_c8f03
	ld a, d
	ld [hLCDStatCustom + 1], a
	ld a, e
	ld [hLCDStatCustom + 2], a
	ret

Functionc8f0a: ; c8f0a (32:4f0a)
	xor a
	ld [hLCDStatCustom + 1], a
	ld [hLCDStatCustom + 2], a
	call Functionc8eca
	xor a
	ld [hLCDStatCustom], a
	call EndBattleBGEffect
	ret

Functionc8f19: ; c8f19 (32:4f19)
	xor a
	ld [hLCDStatCustom], a
	ld a, $e4
	ld [rBGP], a
	ld [wcfc7], a
	ld [wcfc9], a
	ld [hLCDStatCustom + 1], a
	ld [hLCDStatCustom + 2], a
	call Functionc8eca
	ret

Functionc8f2e: ; c8f2e (32:4f2e)
	push bc
	xor a
	ld [BattleAnimTemps], a
	ld a, e
	ld [BattleAnimTemps + 1], a
	ld a, d
	ld [BattleAnimTemps + 2], a
	ld a, $80
	ld [BattleAnimTemps + 3], a
	ld bc, LYOverridesBackup
.asm_c8f43
	ld a, [hLCDStatCustom + 1]
	cp c
	jr nc, .asm_c8f58
	ld a, [hLCDStatCustom + 2]
	cp c
	jr c, .asm_c8f58
	ld a, [BattleAnimTemps + 2]
	ld d, a
	ld a, [BattleAnimTemps]
	call Functionc905d
	ld [bc], a
.asm_c8f58
	inc bc
	ld a, [BattleAnimTemps + 1]
	ld hl, BattleAnimTemps
	add [hl]
	ld [hl], a
	ld hl, BattleAnimTemps + 3
	dec [hl]
	jr nz, .asm_c8f43
	pop bc
	ret

Functionc8f69: ; c8f69 (32:4f69)
	push bc
	xor a
	ld [BattleAnimTemps], a
	ld a, e
	ld [BattleAnimTemps + 1], a
	ld a, d
	ld [BattleAnimTemps + 2], a
	ld a, $40
	ld [BattleAnimTemps + 3], a
	ld bc, w5_d422
.asm_c8f7e
	ld a, [BattleAnimTemps + 2]
	ld d, a
	ld a, [BattleAnimTemps]
	call Functionc905d
	ld [bc], a
	inc bc
	ld a, [BattleAnimTemps + 1]
	ld hl, BattleAnimTemps
	add [hl]
	ld [hl], a
	ld hl, BattleAnimTemps + 3
	dec [hl]
	jr nz, .asm_c8f7e
	pop bc
	ret

Functionc8f9a: ; c8f9a (32:4f9a)
	push bc
	ld [BattleAnimTemps + 3], a
	ld a, e
	ld [BattleAnimTemps + 1], a
	ld a, d
	ld [BattleAnimTemps + 2], a
	call Functionc8fe4
	ld hl, LYOverridesBackup
	add hl, de
	ld c, l
	ld b, h
.asm_c8faf
	ld a, [BattleAnimTemps + 3]
	and a
	jr z, .asm_c8fe1
	dec a
	ld [BattleAnimTemps + 3], a
	push af
	ld a, [BattleAnimTemps + 2]
	ld d, a
	ld a, [BattleAnimTemps + 1]
	push hl
	call Functionc905d
	ld e, a
	pop hl
	ld a, [hLCDStatCustom + 2]
	cp c
	jr c, .asm_c8fcf
	ld a, e
	ld [bc], a
	inc bc
.asm_c8fcf
	ld a, [hLCDStatCustom + 1]
	cp l
	jr nc, .asm_c8fd6
	ld [hl], e
	dec hl
.asm_c8fd6
	ld a, [BattleAnimTemps + 1]
	add $4
	ld [BattleAnimTemps + 1], a
	pop af
	jr .asm_c8faf
.asm_c8fe1
	pop bc
	and a
	ret

Functionc8fe4: ; c8fe4 (32:4fe4)
	ld a, [hLCDStatCustom + 1]
	ld e, a
	ld a, [BattleAnimTemps]
	add e
	ld e, a
	ld d, $0
	ret

Functionc8fef: ; c8fef (32:4fef)
	push bc
	ld a, [hLCDStatCustom + 1]
	ld l, a
	inc a
	ld e, a
	ld h, $d2
	ld d, h
	ld a, [hLCDStatCustom + 2]
	sub l
	and a
	jr z, .asm_c9009
	ld c, a
	ld a, [hl]
	push af
.asm_c9001
	ld a, [de]
	inc de
	ld [hli], a
	dec c
	jr nz, .asm_c9001
	pop af
	ld [hl], a
.asm_c9009
	pop bc
	ret

Functionc900b: ; c900b (32:500b)
	push af
	ld h, $d2
	ld a, [hLCDStatCustom + 1]
	ld l, a
	ld a, [hLCDStatCustom + 2]
	sub l
	ld d, a
	pop af
.asm_c9016
	ld [hli], a
	dec d
	jr nz, .asm_c9016
	ret

Functionc901b: ; c901b (32:501b)
	push af
	ld e, a
	ld a, [hLCDStatCustom + 1]
	ld l, a
	ld a, [hLCDStatCustom + 2]
	sub l
	sub e
	ld d, a
	ld h, $d2
	ld a, [hLCDStatCustom + 1]
	ld l, a
	ld a, $90
.asm_c902c
	ld [hli], a
	dec e
	jr nz, .asm_c902c
	pop af
	xor $ff
.asm_c9033
	ld [hli], a
	dec d
	jr nz, .asm_c9033
	ret

Functionc9038: ; c9038 (32:5038)
	ld hl, $2
	add hl, bc
	ld a, [hBattleTurn]
	and $1
	xor [hl]
	ret

Functionc9042: ; c9042 (32:5042)
	ld hl, $2
	add hl, bc
	ld a, [hBattleTurn]
	and $1
	xor [hl]
	jr nz, .asm_c9053
	ld a, [EnemySubStatus3] ; EnemySubStatus3
	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
	ret

.asm_c9053
	ld a, [PlayerSubStatus3] ; PlayerSubStatus3
	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
	ret

Functionc9059: ; c9059 (32:5059)
	ld a, [hSGB]
	and a
	ret

Functionc905d: ; c905d (32:505d)
	ld e, a
	callab BattleAnim_Sine_e
	ld a, e
	ret

Functionc9066: ; c9066 (32:5066)
	ld e, a
	callab BattleAnim_Cosine_e
	ld a, e
	ret

; c906f (32:506f)