shithub: pokecrystal

ref: ed10d336cb2c31915f6c2885ba8b3c5a4e7ddc66
dir: /misc/mobile_40.asm/

View raw version
Function100000: ; 100000
; d: 1 or 2
; e: bank
; bc: addr
	ld a, [rSVBK]
	push af
	ld a, 1
	ld [rSVBK], a

	call Function100022
	call Function1000ba
	call Function100675
	call Function100057
	call Function10016f
	call Function100276

	push bc
	call Function100301
	pop bc

	pop af
	ld [rSVBK], a
	ret
; 100022

Function100022: ; 100022
	push de
	push bc
	call SetRAMStateForMobile
	pop bc
	pop de
	ld a, d
	ld [wcd21], a
	ld a, e
	ld [wcd22], a
	ld a, c
	ld [wcd23], a
	ld a, b
	ld [wcd24], a
	callba Function10127e
	callba MobileFunc_106462
	callba Function106464 ; load broken gfx
	callba Function11615a ; init RAM
	ld hl, VramState
	set 1, [hl]
	ret
; 100057

Function100057: ; 100057
	call DisableMobile
	call ReturnToMapFromSubmenu
	ld hl, VramState
	res 1, [hl]
	ret
; 100063

SetRAMStateForMobile: ; 100063
	xor a
	ld hl, BGMapBuffer
	ld bc, $65
	call ByteFill
	xor a
	ld hl, wc300
	ld bc, $100
	call ByteFill
	ld a, [rIE]
	ld [BGMapBuffer], a
	xor a
	ld [hMapAnims], a
	ld [hLCDCPointer], a
	ret
; 100082

EnableMobile: ; 100082
	xor a
	ld hl, OverworldMap
	ld bc, OverworldMapEnd - OverworldMap
	call ByteFill

	di
	call DoubleSpeed
	xor a
	ld [rIF], a
	ld a, 1 << VBLANK + 1 << LCD_STAT + 1 << TIMER + 1 << SERIAL
	ld [rIE], a
	xor a
	ld [hMapAnims], a
	ld [hLCDCPointer], a
	ld a, $01
	ld [hMobileReceive], a
	ld [hMobile], a
	ei

	ret
; 0x1000a4

DisableMobile: ; 1000a4
	di
	xor a
	ld [hMobileReceive], a
	ld [hMobile], a
	xor a
	ld [hVBlank], a
	call NormalSpeed
	xor a
	ld [rIF], a
	ld a, [BGMapBuffer]
	ld [rIE], a
	ei
	ret
; 1000ba

Function1000ba: ; 1000ba
.loop
	; call [wcd22]:([wcd23][wcd24] + [wMobileCommsJumptableIndex])
	ld hl, wcd23
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [wMobileCommsJumptableIndex]
	ld e, a
	ld d, 0
	add hl, de
	add hl, de
	ld a, [wcd22]
	call GetFarHalfword
	ld a, [wcd22]
	rst FarCall

	call Function1000e8
	call Function1000fa
	call Function100144
	call Function100163
	ld a, [wcd2b]
	and a
	jr z, .loop
	call DelayFrame
	ret
; 1000e8

Function1000e8: ; 1000e8
	ld hl, wcd29
	bit 7, [hl]
	ret z
	callba Function115dd3
	ld hl, wcd29
	set 6, [hl]
	ret
; 1000fa

Function1000fa: ; 1000fa
	ld a, [wc30d]
	and a
	ret z
	ld hl, wcd29
	bit 4, [hl]
	ret z
	ld a, [wcd2b]
	and a
	jr nz, .asm_100117
	callba Function11619d
	ld hl, wcd29
	set 6, [hl]
	ret

.asm_100117
	di
	xor a
	ld [rIF], a
	ld a, [rIE]
	and $13
	ld [rIE], a
	xor a
	ld [hMobileReceive], a
	ld [hMobile], a
	ei

	ld a, [wLinkMode]
	push af
	xor a
	ld [wLinkMode], a
	ld a, $04
	ld [wc314 + 5], a
	callba Function11619d
	ld hl, wcd29
	set 6, [hl]
	pop af
	ld [wLinkMode], a
	ret
; 100144

Function100144: ; 100144
	ld hl, wcd29
	bit 5, [hl]
	jr z, .asm_100155
	res 5, [hl]
	res 2, [hl]
	res 6, [hl]
	call Function100320
	ret

.asm_100155
	bit 2, [hl]
	ret z
	res 2, [hl]
	res 6, [hl]
	callba HDMATransferTileMapToWRAMBank3
	ret
; 100163

Function100163: ; 100163
	ld hl, wcd29
	bit 6, [hl]
	ret z
	res 6, [hl]
	call DelayFrame
	ret
; 10016f

Function10016f: ; 10016f
	ld a, [wcd2b]
	cp $01
	ret z
	cp $02
	ret z
	cp $ff
	jp z, .asm_1001f5
	cp $fe
	jr z, .asm_1001c4
	cp $f5
	jr z, .asm_1001e7
	cp $f6
	jr z, .asm_1001b6
	cp $fa
	jp z, .asm_1001bd
	cp $f7
	jp z, .asm_1001ee
	cp $f4
	jr z, .asm_1001d2
	cp $f3
	jr z, .asm_1001cb
	cp $f1
	jr z, .asm_1001c4
	cp $f2
	jr z, .asm_1001c4
	cp $fc
	jr z, .asm_1001e6
	cp $fb
	jr z, .asm_1001af
	cp $f8
	ret z
	ret   ; ????????????????????????????

.asm_1001af
	ld a, $d7
	ld de, 0
	jr .asm_1001d7

.asm_1001b6
	ld a, $d5
	ld de, 0
	jr .asm_1001d7

.asm_1001bd
	ld a, $d6
	ld de, 0
	jr .asm_1001d7

.asm_1001c4
	ld a, $d2
	ld de, 2
	jr .asm_1001d7

.asm_1001cb
	ld a, $d1
	ld de, 1
	jr .asm_1001d7

.asm_1001d2
	ld a, $d0
	ld de, 0

.asm_1001d7
	ld [wc300], a
	ld a, d
	ld [wc302], a
	ld a, e
	ld [wc301], a
	call Function10020b
	ret

.asm_1001e6
	ret

.asm_1001e7
	ld de, String10025e
	call Function100232
	ret

.asm_1001ee
	ld de, String10024d
	call Function100232
	ret

.asm_1001f5
	ld a, [wcd2c]
	ld [wc300], a
	ld a, [wcd2d]
	ld [wc302], a
	ld a, [wcd2d]
	ld [wc301], a
	call Function10020b
	ret
; 10020b

Function10020b: ; 10020b
	xor a
	ld [wc303], a
	callba FadeOutPalettes
	callba Function106464
	call HideSprites
	call DelayFrame

	ld a, [rSVBK]
	push af
	ld a, $01
	ld [rSVBK], a

	callba Function17f555

	pop af
	ld [rSVBK], a
	ret
; 100232

Function100232: ; 100232
	push de
	callba Function106464
	call Function3f20
	call UpdateSprites
	hlcoord 1, 2
	pop de
	call PlaceString
	call Function100320
	call JoyWaitAorB
	ret
; 10024d

String10024d: ; 10024d
	db   "つうしんを キャンセル しました@"
; 10025e

String10025e: ; 10025e
	db   "おともだちと えらんだ へやが"
	next "ちがうようです@"
; 100276

Function100276: ; 100276
	ld a, [wcd2b]
	cp $01
	jr z, .asm_10029f
	cp $02
	jr z, .asm_100296
	cp $f5
	jr z, .asm_1002a5
	cp $f6
	jr z, .asm_1002a5
	cp $f7
	jr z, .asm_100293
	cp $f8
	jr z, .asm_1002b1
	jr .asm_1002c0

.asm_100293
	ld c, $02
	ret

.asm_100296
	callba Script_reloadmappart
	ld c, $04
	ret

.asm_10029f
	call Function1002dc
	ld c, 0
	ret

.asm_1002a5
	callba Script_reloadmappart
	call Function1002ed
	ld c, $03
	ret

.asm_1002b1
	call Function1002c9
	call Function1002dc
	ld de, String10024d
	call Function100232
	ld c, $02
	ret

.asm_1002c0
	call Function1002c9
	call Function1002dc
	ld c, $01
	ret
; 1002c9

Function1002c9: ; 1002c9
	ld hl, wcd2a
	bit 0, [hl]
	ret z
	callba CleanUpBattleRAM
	callba LoadPokemonData
	ret
; 1002dc

Function1002dc: ; 1002dc
	ld a, MAPSETUP_LINKRETURN
	ld [hMapEntryMethod], a
	callba RunMapSetupScript
	xor a
	ld [hMapEntryMethod], a
	call LoadStandardFont
	ret
; 1002ed

Function1002ed: ; 1002ed
	callba LoadOW_BGPal7
	callba ApplyPals
	ld a, $01
	ld [hCGBPalUpdate], a
	call DelayFrame
	ret
; 100301

Function100301: ; 100301
	ld hl, wcd2a
	bit 1, [hl]
	ret z
	callba Function106464
	callba Function10202c
	callba Function115dd3
	call Function100320
	call JoyWaitAorB
	ret
; 100320

Function100320: ; 100320
	callba Mobile_ReloadMapPart
	ret
; 100327

Function100327: ; 100327
	callba HDMATransferTileMapToWRAMBank3
	ret
; 100327


Function10032e: ; 10032e
	call Function10034d
	ld e, a
	ret nc
	ld [wcd2b], a
	ret
; 100337

Function100337: ; 100337
	call Function10032e
	ret c
	ld a, [wc821]
	bit 4, a
	jr z, .asm_100345
	ld a, e
	and a
	ret

.asm_100345
	ld a, $f9
	ld e, a
	ld [wcd2b], a
	scf
	ret
; 10034d

Function10034d: ; 10034d
	ld a, [wc821]
	bit 1, a
	jr nz, .asm_10036a
	bit 2, a
	jr nz, .asm_10037e
	bit 3, a
	jr nz, .asm_100366
	bit 0, a
	jr nz, .asm_100364
	ld a, $01
	and a
	ret

.asm_100364
	xor a
	ret

.asm_100366
	ld a, $02
	and a
	ret

.asm_10036a
	ld a, 0
	call Function3e32
	ld [wcd2c], a
	ld a, h
	ld [wcd2d], a
	ld a, l
	ld [wcd2e], a
	ld a, $ff
	scf
	ret

.asm_10037e
	ld a, $fe
	scf
	ret
; 100382

Function100382: ; 100382
	ld a, [wcd27]
	ld hl, Jumptable_10044e
	rst JumpTable
	ret
; 10038a

Function10038a: ; 10038a
	ld hl, wccb4
	ld a, $2e
	call Function3e32
	ret
; 100393

Function100393: ; 100393
	ld hl, wcc60
	ld a, $3a
	call Function3e32
	ret
; 10039c

Function10039c: ; 10039c
	ld hl, wcc60
	ld de, w3_d000
	ld bc, $54
	ld a, $03
	call FarCopyWRAM
	ret
; 1003ab

Function1003ab: ; 1003ab
	ld hl, w3_d000
	ld de, wcc60
	ld bc, $54
	ld a, $03
	call FarCopyWRAM
	ret
; 1003ba

Function1003ba: ; 1003ba
	ld hl, wccb4
	ld de, w3_d080
	ld bc, $54
	ld a, $03
	call FarCopyWRAM
	ret
; 1003c9

Function1003c9: ; 1003c9
	ld hl, w3_d080
	ld de, wccb4
	ld bc, $54
	ld a, $03
	call FarCopyWRAM
	ret
; 1003d8

Function1003d8: ; 1003d8
	ld hl, wccb4
	ld a, [hli]
	ld c, a
	ld b, 0
	push hl
	add hl, bc
	ld a, [BGMapPalBuffer]
	ld [hl], a
	pop hl
	inc bc
	call Function10043a
	add hl, bc
	ld [hl], e
	inc hl
	ld [hl], d
	ld a, c
	add $02
	ld [wccb4], a
	ret
; 1003f5

Function1003f5: ; 1003f5
	ld a, [wcc60]
	sub $03
	ld [wcc60], a
	ld a, [wccb4]
	sub $03
	ld [wccb4], a
	ret
; 100406

Function100406: ; 100406
	ld a, [wcc60]
	sub $02
	ld c, a
	ld b, 0
	ld hl, wcc61
	call Function10043a
	add hl, bc
	ld a, [hli]
	cp e
	jr nz, .asm_100426
	ld a, [hld]
	cp d
	jr nz, .asm_100426
	dec hl
	ld a, [BGMapPalBuffer]
	cp [hl]
	jr nz, .asm_10042d
	xor a
	ret

.asm_100426
	ld a, $f4
	ld [wcd2b], a
	jr .asm_100432

.asm_10042d
	ld a, $f3
	ld [wcd2b], a

.asm_100432
	push hl
	ld hl, wcd7c
	inc [hl]
	pop hl
	scf
	ret
; 10043a

Function10043a: ; 10043a
	push hl
	push bc
	ld de, 0
.asm_10043f
	ld a, [hli]
	add e
	ld e, a
	ld a, d
	adc 0
	ld d, a
	dec bc
	ld a, b
	or c
	jr nz, .asm_10043f
	pop bc
	pop hl
	ret
; 10044e


Jumptable_10044e: ; 10044e (40:444e)
	dw Function10046a
	dw Function10047c
	dw Function100493
	dw Function1004ba
	dw Function1004f4
	dw Function1004ce
	dw Function1004de
	dw Function1004a4
	dw Function100495
	dw Function1004ce
	dw Function1004de
	dw Function1004e9
	dw Function1004f4
	dw Function1004a4

Function10046a: ; 10046a
	ld hl, BGMapPalBuffer
	inc [hl]
	call Function1003d8
	call Function1003ba
	ld a, [wcd27]
	inc a
	ld [wcd27], a
	ret
; 10047c

Function10047c: ; 10047c
	call Function100337
	ret c
	ret z
	cp $02
	jr z, .asm_100487
	jr .asm_10048d

.asm_100487
	ld a, $08
	ld [wcd27], a
	ret

.asm_10048d
	ld a, $02
	ld [wcd27], a
	ret
; 100493

Function100493: ; 100493
	jr asm_100497

Function100495: ; 100495
	jr asm_100497

asm_100497
	call Function100337
	ret c
	ret z
	ld a, [wcd27]
	inc a
	ld [wcd27], a
	ret
; 1004a4

Function1004a4: ; 1004a4
	call Function100406
	jr c, .asm_1004b8
	call Function1003c9
	call Function1003f5
	ld a, [wcd27]
	set 7, a
	ld [wcd27], a
	ret

.asm_1004b8
	scf
	ret
; 1004ba

Function1004ba: ; 1004ba
	call Function10038a
	and a
	jr nz, .asm_1004c8
	ld a, [wcd27]
	inc a
	ld [wcd27], a
	ret

.asm_1004c8
	ld a, $08
	ld [wcd27], a
	ret
; 1004ce

Function1004ce: ; 1004ce
	call Function100337
	ret c
	ret z
	cp $02
	ret nz
	ld a, [wcd27]
	inc a
	ld [wcd27], a
	ret
; 1004de

Function1004de: ; 1004de
	call Function100393
	ld a, [wcd27]
	inc a
	ld [wcd27], a
	ret
; 1004e9

Function1004e9: ; 1004e9
	call Function10038a
	ld a, [wcd27]
	inc a
	ld [wcd27], a
	ret
; 1004f4

Function1004f4: ; 1004f4
	call Function100337
	ret c
	ret z
	ld a, [wcd27]
	inc a
	ld [wcd27], a
	call Function10039c
	ret
; 100504

Function100504: ; 100504
	push de
	call Function3f20
	call UpdateSprites
	pop de
	hlcoord 4, 2
	call PlaceString
	ret
; 100513

Function100513: ; 100513
	call Function3f7c
	call PlaceVerticalMenuItems
	call InitVerticalMenuCursor
	ld hl, w2DMenuFlags1
	set 7, [hl]
	ret
; 100522

Function100522: ; 100522
	ld a, [wcd28]
	ld hl, Jumptable_10052a
	rst JumpTable
	ret
; 10052a

Jumptable_10052a: ; 10052a
	dw Function100534
	dw Function100545
	dw Function100545
	dw Function100545
	dw Function10054d
; 100534

Function100534: ; 100534
	call Function100513
	call UpdateSprites
	call ApplyTilemap
	ld a, [wcd28]
	inc a
	ld [wcd28], a
	ret
; 100545

Function100545: ; 100545
	ld a, [wcd28]
	inc a
	ld [wcd28], a
	ret
; 10054d

Function10054d: ; 10054d
	callba MobileMenuJoypad
	ld a, c
	ld hl, wMenuJoypadFilter
	and [hl]
	ret z
	call MenuClickSound
	bit 0, a
	jr nz, .asm_100565
	bit 1, a
	jr nz, .asm_10056f
	ret

.asm_100565
	ld a, [wcd28]
	set 7, a
	ld [wcd28], a
	and a
	ret

.asm_10056f
	ld a, [wcd28]
	set 7, a
	ld [wcd28], a
	scf
	ret
; 100579

Function100579: ; 100579
	ld a, [wcd26]
	ld hl, Jumptable_100581
	rst JumpTable
	ret
; 100581

Jumptable_100581: ; 100581
	dw Function100585
	dw Function100597
; 100585

Function100585: ; 100585
	ld hl, MenuDataHeader_1005b2
	call LoadMenuDataHeader
	ld a, 0
	ld [wcd28], a
	ld a, [wcd26]
	inc a
	ld [wcd26], a

Function100597: ; 100597
	call Function100522
	ld a, [wcd28]
	bit 7, a
	ret z
	jr nc, .asm_1005a6
	xor a
	ld [wMenuCursorY], a

.asm_1005a6
	call ExitMenu
	ld a, [wcd26]
	set 7, a
	ld [wcd26], a
	ret
; 1005b2

MenuDataHeader_1005b2: ; 1005b2
	db $40 ; flags
	db 6, 14
	db 10, 19
	dw MenuData2_1005ba
	db 1 ; default option

MenuData2_1005ba:
	db $c0 ; flags
	db 2
	db "はい@"
	db "いいえ@"
; 1005c3

Function1005c3: ; 1005c3
	ld a, [wcd26]
	ld hl, Jumptable_1005cb
	rst JumpTable
	ret
; 1005cb

Jumptable_1005cb: ; 1005cb
	dw Function1005cf
	dw Function1005e1
; 1005cf

Function1005cf: ; 1005cf
	ld hl, MenuDataHeader_1005fc
	call LoadMenuDataHeader
	ld a, 0
	ld [wcd28], a
	ld a, [wcd26]
	inc a
	ld [wcd26], a

Function1005e1: ; 1005e1
	call Function100522
	ld a, [wcd28]
	bit 7, a
	ret z
	jr nc, .asm_1005f0
	xor a
	ld [wMenuCursorY], a
.asm_1005f0
	call ExitMenu
	ld a, [wcd26]
	set 7, a
	ld [wcd26], a
	ret
; 1005fc

MenuDataHeader_1005fc: ; 1005fc
	db $40 ; flags
	db 6, 14
	db 10, 19
	dw MenuData2_100604
	db 1 ; default option

MenuData2_100604: ; 100604
	db $c0 ; flags
	db 2
	db "かける@"
	db "まつ@"
; 10060d

Mobile_CommunicationStandby: ; 10060d
	hlcoord 3, 10
	ld b, 1
	ld c, 11
	call Function3eea
	ld de, .String
	hlcoord 4, 11
	call PlaceString
	ret
; 100621

.String: ; 100621
	db "つうしんたいきちゅう!@"
; 10062d

AdvanceMobileInactivityTimerAndCheckExpired: ; 10062d
	push bc
	call IncrementMobileInactivityTimerByCFrames
	pop bc
	ld a, [wMobileInactivityTimerMinutes]
	cp b
	jr nc, .timed_out
	and a
	ret

.timed_out
	ld a, $fa
	ld [wcd2b], a
	scf
	ret
; 100641

StartMobileInactivityTimer: ; 100641
	xor a
	ld [wMobileInactivityTimerMinutes], a
	ld [wMobileInactivityTimerSeconds], a
	ld [wMobileInactivityTimerFrames], a
	ret
; 10064c

IncrementMobileInactivityTimerBy1Frame: ; 10064c
	ld c, 1
IncrementMobileInactivityTimerByCFrames: ; 10064e
	ld hl, wMobileInactivityTimerFrames ; timer?
	ld a, [hl]
	add c
	cp 60
	jr c, .seconds
	xor a

.seconds
	ld [hld], a
	ret c
	ld a, [hl]
	inc a
	cp 60
	jr c, .minutes
	xor a

.minutes
	ld [hld], a
	ret c
	inc [hl]
	ret
; 100665

Function100665: ; 100665
	call UpdateTime
	ld hl, wcd36
	ld a, [hHours]
	ld [hli], a
	ld a, [hMinutes]
	ld [hli], a
	ld a, [hSeconds]
	ld [hl], a
	ret
; 100675

Function100675: ; 100675
	ld hl, wcd2a
	bit 2, [hl]
	set 2, [hl]
	ret nz
	call Function1006d3
	ret
; 100681

Function100681: ; 100681
	push hl
	ld hl, wcd2a
	bit 2, [hl]
	ld hl, wcd2a
	set 2, [hl]
	pop hl
	jr nz, .asm_100694
	push hl
	call Function1006d3
	pop hl
.asm_100694
	ld de, wcd32

Function100697: ; 100697
	ld a, [de]
	and a
	jr nz, .asm_1006bb
	inc de
	push de
	call .asm_1006b4
	ld de, String1006c2
	call PlaceString
	ld h, b
	ld l, c
	pop de
	inc de
	call .asm_1006b4
	ld de, String1006c6
	call PlaceString
	ret

.asm_1006b4
	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
	call PrintNum
	ret

.asm_1006bb
	ld de, String1006ca
	call PlaceString
	ret
; 1006c2

String1006c2: ; 1006c2
	db "ふん @"
String1006c6: ; 1006c6
	db "びょう@"
String1006ca: ; 1006ca
	db "1じかんいじょう@"
; 1006d3

Function1006d3: ; 1006d3
	call UpdateTime
	ld de, wcd34
	ld hl, wcd38

Function1006dc: ; 1006dc
	ld a, [hld]
	ld c, a
	ld a, [hSeconds]
	sub c
	jr nc, .asm_1006e5
	add $3c

.asm_1006e5
	ld [de], a
	dec de
	ld a, [hld]
	ld c, a
	ld a, [hMinutes]
	sbc c
	jr nc, .asm_1006f0
	add $3c

.asm_1006f0
	ld [de], a
	dec de
	ld a, [hl]
	ld c, a
	ld a, [hHours]
	sbc c
	jr nc, .asm_1006fb
	add $18

.asm_1006fb
	ld [de], a
	ret
; 1006fd

Function1006fd: ; 1006fd
	ld a, $04
	ld hl, $a800
	call GetSRAMBank
	xor a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	call CloseSRAM
	ret
; 10070d

Function10070d: ; 10070d
	ld a, $04
	ld hl, $a800
	call GetSRAMBank
	xor a
	ld [hli], a
	ld a, $0a
	ld [hli], a
	xor a
	ld [hli], a
	call CloseSRAM
	ret
; 100720

Function100720: ; 100720
	xor a
	ld [wcd6a], a
	call UpdateTime
	ld a, [hHours]
	ld [wcd72], a
	ld a, [hMinutes]
	ld [wcd73], a
	ld a, [hSeconds]
	ld [wcd74], a
	ld a, $04
	ld hl, $a800
	call GetSRAMBank
	ld a, [hli]
	ld [wcd6c], a
	ld a, [hli]
	ld [wcd6d], a
	ld a, [hli]
	ld [wcd6e], a
	call CloseSRAM
	ld a, [wcd6d]
	ld [wcd6b], a
	ret
; 100754

Function100754: ; 100754
	call UpdateTime
	ld a, [hHours]
	ld [wcd72], a
	ld a, [hMinutes]
	ld [wcd73], a
	ld a, [hSeconds]
	ld [wcd74], a
	ld a, [wcd6d]
	ld [wcd6b], a
	ld hl, wcd2a
	res 6, [hl]
	ret
; 100772

Function100772: ; 100772
	push de
	ld hl, wcd6c
	ld a, [de]
	cp [hl]
	jr c, .asm_10079a
	jr nz, .asm_10078c
	inc hl
	inc de
	ld a, [de]
	cp [hl]
	jr c, .asm_10079a
	jr nz, .asm_10078c
	inc hl
	inc de
	ld a, [de]
	cp [hl]
	jr c, .asm_10079a
	jr z, .asm_10079a

.asm_10078c
	pop hl
	ld a, [hli]
	ld [wcd6c], a
	ld a, [hli]
	ld [wcd6d], a
	ld a, [hli]
	ld [wcd6e], a
	ret

.asm_10079a
	pop de
	ret
; 10079c


Function10079c: ; 10079c
	ld a, [wcd21]
	cp $01
	jr nz, .dont_quit
	ld hl, wcd2a
	bit 5, [hl]
	jr nz, .dont_quit
	ld hl, wcd2a
	bit 6, [hl]
	jr nz, .dont_quit
	ld a, [wcd6a]
	add c
	cp 60
	jr nc, .overflow
	ld [wcd6a], a
	and a
	ret

.overflow
	sub 60
	ld [wcd6a], a
	ld d, b
	push de
	call Function1007f6
	pop de
	jr c, .quit
	ld a, c
	and a
	jr nz, .quit
	ld a, b
	cp 10
	jr nc, .quit
	ld a, d
	and a
	ret z
	ld a, [wcd6b]
	cp b
	ret z
	ld a, b
	ld [wcd6b], a
	call Function1008e0
	and a
	ret

.quit
	call Function1008e0
	ld hl, wcd2a
	set 4, [hl]
	ld a, $fc
	ld [wcd2b], a
	scf
	ret

.dont_quit
	and a
	ret
; 1007f6

Function1007f6: ; 1007f6
	call UpdateTime
	ld hl, wcd74
	ld de, wcd71
	call Function1006dc
	ld a, $04
	call GetSRAMBank
	ld hl, $a802
	call Function100826
	call CloseSRAM
	ld hl, wcd6e
	call Function100826
	ld a, [hHours]
	ld [wcd72], a
	ld a, [hMinutes]
	ld [wcd73], a
	ld a, [hSeconds]
	ld [wcd74], a
	ret
; 100826

Function100826: ; 100826
	ld a, [wcd71]
	add [hl]
	sub $3c
	jr nc, .asm_100830
	add $3c

.asm_100830
	ld [hld], a
	ccf
	ld a, [BGMapBufferPtrs]
	adc [hl]
	sub $3c
	jr nc, .asm_10083c
	add $3c

.asm_10083c
	ld [hld], a
	ld b, a
	ccf
	ld a, [wcd6f]
	adc [hl]
	ld [hl], a
	ld c, a
	ret
; 100846

Function100846: ; 100846
	ld hl, wcd2a
	bit 5, [hl]
	jr nz, .asm_10087c
	ld a, [wcd6e]
	ld c, a
	ld a, 0
	sub c
	jr nc, .asm_100858
	add $3c

.asm_100858
	ld [StringBuffer2 + 2], a
	ld a, [wcd6d]
	ld c, a
	ld a, $0a
	sbc c
	ld [StringBuffer2 + 1], a
	xor a
	ld [StringBuffer2], a
	ld de, String_10088e
	hlcoord 1, 14
	call PlaceString
	ld de, StringBuffer2
	hlcoord 4, 16
	call Function100697
	ret

.asm_10087c
	ld de, String_10088e
	hlcoord 1, 14
	call PlaceString
	ld h, b
	ld l, c
	ld de, String_10089f
	call PlaceString
	ret
; 10088e

String_10088e: ; 10088e
	db   "モバイルたいせん できる"
	next "じかん@"
; 10089f

String_10089f: ; 10089f
	db " むせいげん@"
; 1008a6

Function1008a6: ; 1008a6
	ld a, $04
	ld hl, $a800
	call GetSRAMBank
	ld a, [hli]
	ld [StringBuffer2], a
	ld a, [hli]
	ld [StringBuffer2 + 1], a
	ld a, [hli]
	ld [StringBuffer2 + 2], a
	call CloseSRAM
	ld a, [StringBuffer2 + 2]
	ld b, a
	ld a, 0
	sub b
	jr nc, .asm_1008c8
	add $3c

.asm_1008c8
	ld b, a
	ld a, [StringBuffer2 + 1]
	ld c, a
	ld a, $0a
	sbc c
	ld c, a
	jr c, .asm_1008da
	ld a, [StringBuffer2]
	and a
	jr nz, .asm_1008da
	ret

.asm_1008da
	call Function10070d
	ld c, 0
	ret
; 1008e0


Function1008e0: ; 1008e0
	ld a, [hBGMapMode]
	ld b, a
	ld a, [hVBlank]
	ld c, a
	push bc
	xor a
	ld [hBGMapMode], a
	ld a, $03
	ld [hVBlank], a
	call Function100970
	call Function100902
	call Function100989
	call DelayFrame
	pop bc
	ld a, c
	ld [hVBlank], a
	ld a, b
	ld [hBGMapMode], a
	ret
; 100902

Function100902: ; 100902
	hlcoord 3, 10
	ld b, $01
	ld c, $0b
	call TextBox
	ld a, [wcd6d]
	ld c, a
	ld a, $0a
	sub c
	ld [StringBuffer2], a
	jr z, .asm_10093f
	ld de, .string_100966
	hlcoord 4, 11
	call PlaceString
	hlcoord 8, 11
	lb bc, 1, 2
	ld de, StringBuffer2
	call PrintNum
	ld de, SFX_TWO_PC_BEEPS
	call PlaySFX
	callba ReloadMapPart
	ld c, $3c
	call DelayFrames
	ret

.asm_10093f
	ld de, .string_10095a
	hlcoord 4, 11
	call PlaceString
	ld de, SFX_4_NOTE_DITTY
	call PlaySFX
	callba ReloadMapPart
	ld c, 120
	call DelayFrames
	ret
; 10095a

.string_10095a ; 10095a
	db "たいせん しゅうりょう@"
.string_100966 ; 100966
	db "のこり   ふん", $e7, "@"
; 100970


Function100970: ; 100970
	hlcoord 0, 0
	ld de, w3_dc00
	call Function1009a5
	hlcoord 0, 0, AttrMap
	ld de, w3_dd68
	call Function1009a5
	call Function1009d2
	call Function1009ae
	ret
; 100989

Function100989: ; 100989
	ld hl, w3_dc00
	decoord 0, 0
	call Function1009a5
	call Function1009ae
	callba ReloadMapPart
	ld hl, w3_dd68
	decoord 0, 0, AttrMap
	call Function1009a5
	ret
; 1009a5

Function1009a5: ; 1009a5
	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
	ld a, $03
	call FarCopyWRAM
	ret
; 1009ae

Function1009ae: ; 1009ae
	ld a, [rSVBK]
	push af
	ld a, $03
	ld [rSVBK], a

	ld hl, w3_d800
	decoord 0, 0, AttrMap
	ld c, SCREEN_WIDTH
	ld b, SCREEN_HEIGHT
.loop_row
	push bc
.loop_col
	ld a, [hli]
	ld [de], a
	inc de
	dec c
	jr nz, .loop_col
	ld bc, BG_MAP_WIDTH - SCREEN_WIDTH
	add hl, bc
	pop bc
	dec b
	jr nz, .loop_row

	pop af
	ld [rSVBK], a
	ret
; 1009d2

Function1009d2: ; 1009d2
	ld a, [rSVBK]
	push af
	ld a, $03
	ld [rSVBK], a

	ld a, [rVBK]
	push af
	ld a, $01
	ld [rVBK], a

	ld hl, w3_d800
	debgcoord 0, 0
	lb bc, $03, $24
	call Get2bpp

	pop af
	ld [rVBK], a

	pop af
	ld [rSVBK], a
	ret
; 1009f3

Function1009f3: ; 1009f3
	ld a, [hJoyDown]
	and SELECT + A_BUTTON
	cp SELECT + A_BUTTON
	jr nz, .select_a
	ld hl, wcd2a
	set 4, [hl]
	ld a, $f8
	ld [wcd2b], a
	scf
	ret

.select_a
	xor a
	ret
; 100a09

_LinkBattleSendReceiveAction: ; 100a09
	call .StageForSend
	ld [wd431], a
	callba PlaceWaitingText
	ld a, [wLinkMode]
	cp LINK_MOBILE
	jr nz, .not_mobile

	call .MobileBattle_SendReceiveAction
	call Function100da5
	callba FinishBattleAnim
	jr .done

.not_mobile
	call .LinkBattle_SendReceiveAction

.done
	ret
; 100a2e

.StageForSend: ; 100a2e
	ld a, [wPlayerAction]
	and a
	jr nz, .switch
	ld a, [CurPlayerMove]
	ld b, BATTLEACTION_E
	cp STRUGGLE
	jr z, .struggle
	ld b, BATTLEACTION_D
	cp $ff
	jr z, .struggle
	ld a, [CurMoveNum]
	jr .use_move

.switch
	ld a, [CurPartyMon]
	add BATTLEACTION_SWITCH1
	jr .use_move

.struggle
	ld a, b

.use_move
	and $0f
	ret
; 100a53

.LinkBattle_SendReceiveAction: ; 100a53
	ld a, [wd431]
	ld [wPlayerLinkAction], a
	ld a, $ff
	ld [wOtherPlayerLinkAction], a
.waiting
	call LinkTransfer
	call DelayFrame
	ld a, [wOtherPlayerLinkAction]
	inc a
	jr z, .waiting

	ld b, 10
.receive
	call DelayFrame
	call LinkTransfer
	dec b
	jr nz, .receive

	ld b, 10
.acknowledge
	call DelayFrame
	call LinkDataReceived
	dec b
	jr nz, .acknowledge

	ld a, [wOtherPlayerLinkAction]
	ld [wBattleAction], a
	ret
; 100a87

.MobileBattle_SendReceiveAction: ; 100a87
	call Function100acf
	call StartMobileInactivityTimer
	ld a, 0
	ld [wcd27], a
.asm_100a92
	call DelayFrame
	call GetJoypad
	callba Function100382
	ld c, $01
	ld b, $03
	push bc
	call AdvanceMobileInactivityTimerAndCheckExpired
	pop bc
	jr c, .asm_100ac7
	ld b, $01
	call Function10079c
	jr c, .asm_100ac7
	call Function1009f3
	jr c, .asm_100ac7
	ld a, [wcd2b]
	and a
	jr nz, .asm_100ac7
	ld a, [wcd27]
	bit 7, a
	jr z, .asm_100a92
	call Function100ae7
	jr .asm_100ace

.asm_100ac7
	ld a, $0f
	ld [wd430], a
	jr .asm_100ace

.asm_100ace
	ret
; 100acf

Function100acf: ; 100acf
	ld de, Unknown_100b0a
	ld hl, wccb5
	ld a, [wd431]
	ld [hli], a
	ld c, $01
.asm_100adb
	ld a, [de]
	inc de
	ld [hli], a
	inc c
	and a
	jr nz, .asm_100adb
	ld a, c
	ld [wccb4], a
	ret
; 100ae7

Function100ae7: ; 100ae7
	ld de, Unknown_100b0a
	ld hl, wcc62
.asm_100aed
	ld a, [de]
	inc de
	and a
	jr z, .asm_100af8
	cp [hl]
	jr nz, .asm_100aff
	inc hl
	jr .asm_100aed

.asm_100af8
	ld a, [wcc61]
	ld [wd430], a
	ret

.asm_100aff
	ld a, $0f
	ld [wd430], a
	ld a, $f1
	ld [wcd2b], a
	ret
; 100b0a


SECTION "tetsuji", ROMX

	charmap " ", $20 ; revert to ascii

Unknown_100b0a: ; 100b0a
	db "tetsuji", 0
; 100b12


SECTION "bank40_2", ROMX

Function100b12: ; 100b12
	call Function100dd8
	ret c
	ld hl, BattleMenuDataHeader
	ld a, BANK(BattleMenuDataHeader)
	ld de, LoadMenuDataHeader
	call FarCall_de
	ld a, BANK(BattleMenuDataHeader)
	ld [wMenuData2_2DMenuItemStringsBank], a
	ld a, [wd0d2]
	ld [wMenuCursorBuffer], a
	call Function100e72
	call Function100b45
	callba InitPartyMenuBGPal7
	call Function100ed4
	ld a, [wMenuCursorBuffer]
	ld [wd0d2], a
	call ExitMenu
	ret
; 100b45

Function100b45: ; 100b45
	call Function100b7a
.loop
	call Mobile_SetOverworldDelay
	callba MobileMenuJoypad
	push bc
	callba HDMATransferTileMapToWRAMBank3
	call Function100e2d
	pop bc
	jr c, .asm_100b6b
	ld a, [wMenuJoypadFilter]
	and c
	jr z, .loop
	callba Mobile_GetMenuSelection
	ret

.asm_100b6b
	ld a, [w2DMenuNumCols]
	ld c, a
	ld a, [w2DMenuNumRows]
	call SimpleMultiply
	ld [wMenuCursorBuffer], a
	and a
	ret
; 100b7a

Function100b7a: ; 100b7a
	ld hl, CopyMenuData2
	ld a, [wMenuData2_2DMenuItemStringsBank]
	rst FarCall
	callba Draw2DMenu
	callba MobileTextBorder
	call UpdateSprites
	call ApplyTilemap
	callba Init2DMenuCursorPosition
	ld hl, w2DMenuFlags1
	set 7, [hl]
	ret
; 100b9f

MobileMoveSelectionScreen: ; 100b9f
	xor a
	ld [wMoveSwapBuffer], a
	callba CheckPlayerHasUsableMoves
	ret z
	call Function100dd8
	jp c, xor_a_dec_a
	call Function100e72
	call .GetMoveSelection
	push af
	callba InitPartyMenuBGPal7
	call Function100ed4
	pop af
	ret
; 100bc2

.GetMoveSelection: ; 100bc2
	xor a
	ld [hBGMapMode], a
	call Function100c74
	call Function100c98
.master_loop
	callba MoveInfoBox
.loop
	call Mobile_SetOverworldDelay
	callba MobileMenuJoypad
	push bc
	callba HDMATransferTileMapToWRAMBank3
	call Function100e2d
	pop bc
	jr c, .b_button
	ld a, [wMenuJoypadFilter]
	and c
	bit D_UP_F, a
	jp nz, .d_up
	bit D_DOWN_F, a
	jp nz, .d_down
	bit A_BUTTON_F, a
	jr nz, .a_button
	bit B_BUTTON_F, a
	jr nz, .b_button
	jr .loop

.d_up
	ld a, [wMenuCursorY]
	and a
	jp nz, .master_loop
	ld a, [wNumMoves]
	inc a
	ld [wMenuCursorY], a
	jp .master_loop

.d_down
	ld a, [wMenuCursorY]
	ld b, a
	ld a, [wNumMoves]
	inc a
	inc a
	cp b
	jp nz, .master_loop
	ld a, $01
	ld [wMenuCursorY], a
	jp .master_loop

.b_button
	ld a, [wMenuCursorY]
	dec a
	ld [CurMoveNum], a
	ld a, $01
	and a
	ret

.a_button
	ld a, [wMenuCursorY]
	dec a
	ld [CurMoveNum], a
	ld a, [wMenuCursorY]
	dec a
	ld c, a
	ld b, 0
	ld hl, BattleMonPP
	add hl, bc
	ld a, [hl]
	and $3f
	jr z, .no_pp_left
	ld a, [PlayerDisableCount]
	swap a
	and $0f
	dec a
	cp c
	jr z, .move_disabled
	ld a, [wMenuCursorY]
	dec a
	ld c, a
	ld b, 0
	ld hl, BattleMonMoves
	add hl, bc
	ld a, [hl]
	ld [CurPlayerMove], a
	xor a
	ret

.move_disabled
	ld hl, BattleText_TheMoveIsDisabled
	jr .print_text

.no_pp_left
	ld hl, BattleText_TheresNoPPLeftForThisMove

.print_text
	call StdBattleTextBox
	call Call_LoadTempTileMapToTileMap
	jp .GetMoveSelection
; 100c74

Function100c74: ; 100c74
	hlcoord 0, 8
	ld b, 8
	ld c, 8
	call TextBox
	ld hl, BattleMonMoves
	ld de, wListMoves_MoveIndicesBuffer
	ld bc, NUM_MOVES
	call CopyBytes
	ld a, SCREEN_WIDTH * 2
	ld [Buffer1], a
	hlcoord 2, 10
	predef ListMoves
	ret
; 100c98

Function100c98: ; 100c98
	ld de, .attrs
	call SetMenuAttributes
	ld a, [wNumMoves]
	inc a
	ld [w2DMenuNumRows], a
	ld a, [CurMoveNum]
	inc a
	ld [wMenuCursorY], a
	ret
; 100cad

.attrs ; 100cad
	db 10, 1
	db 255, 1
	db $a0, $00
	dn 2, 0
	db D_UP | D_DOWN | A_BUTTON | B_BUTTON

Mobile_PartyMenuSelect: ; 100cb5
	call Function100dd8
	ret c
	ld hl, w2DMenuFlags1
	set 7, [hl]
	res 6, [hl]
.loop
	call Mobile_SetOverworldDelay
	callba MobileMenuJoypad
	push bc
	callba PlaySpriteAnimations
	callba HDMATransferTileMapToWRAMBank3
	call MobileComms_CheckInactivityTimer
	pop bc
	jr c, .done
	ld a, [wMenuJoypadFilter]
	and c
	jr z, .loop
	call PlaceHollowCursor
	ld a, [PartyCount]
	inc a
	ld b, a
	ld a, [wMenuCursorY]
	cp b
	jr z, .done
	ld [wPartyMenuCursor], a
	ld a, [hJoyLast]
	ld b, a
	bit 1, b
	jr nz, .done
	ld a, [wMenuCursorY]
	dec a
	ld [CurPartyMon], a
	ld c, a
	ld b, 0
	ld hl, PartySpecies
	add hl, bc
	ld a, [hl]
	ld [CurPartySpecies], a
	ld de, SFX_READ_TEXT_2
	call PlaySFX
	call WaitSFX
	and a
	ret

.done
	ld de, SFX_READ_TEXT_2
	call PlaySFX
	call WaitSFX
	scf
	ret
; 100d22

MobileBattleMonMenu: ; 100d22
	call Function100dd8
	ret c
	call Function100d67
	ld hl, w2DMenuFlags1
	set 7, [hl]
	res 6, [hl]
.asm_100d30
	call Mobile_SetOverworldDelay
	callba MobileMenuJoypad
	push bc
	callba PlaySpriteAnimations
	callba HDMATransferTileMapToWRAMBank3
	call MobileComms_CheckInactivityTimer
	pop bc
	jr c, .asm_100d54
	ld a, [wMenuJoypadFilter]
	and c
	jr nz, .asm_100d56
	jr .asm_100d30

.asm_100d54
	scf
	ret

.asm_100d56
	push af
	ld de, SFX_READ_TEXT_2
	call PlaySFX
	pop af
	bit 1, a
	jr z, .asm_100d65
	ret z
	scf
	ret

.asm_100d65
	and a
	ret
; 100d67

Function100d67: ; 100d67
	ld hl, .MenuDataHeader
	call CopyMenuDataHeader
	xor a
	ld [hBGMapMode], a
	call MenuBox
	call UpdateSprites
	call PlaceVerticalMenuItems
	call WaitBGMap
	call CopyMenuData2
	call InitVerticalMenuCursor
	ld hl, w2DMenuFlags1
	set 6, [hl]
	ret
; 100d88

.MenuDataHeader: ; 100d88
	db 0 ; flags
	db 11, 11 ; start coords
	db 17, 19 ; end coords
	dw .MenuData2
	db 1 ; default option

.MenuData2: ; 100d90
	db $c0 ; flags
	db 3
	db "いれかえる@"  ; TRADE
	db "つよさをみる@" ; STATS
	db "キャンセル@"  ; CANCEL
; 100da5

Function100da5: ; 100da5
	ld hl, wcd2a
	res 3, [hl]
	ld hl, wcd29
	res 0, [hl]
	ret
; 100db0

Function100db0: ; 100db0
	ld hl, wcd2a
	bit 3, [hl]
	jr nz, .asm_100dbe
	ld hl, wcd2a
	set 3, [hl]
	scf
	ret

.asm_100dbe
	xor a
	ret
; 100dc0



Function100dc0: ; 100dc0
	ld a, [wLinkMode]
	cp LINK_MOBILE
	jr nz, .mobile
	ld hl, wcd2a
	bit 3, [hl]
	jr z, .mobile
	scf
	ret

.mobile
	xor a
	ret
; 100dd2

Mobile_SetOverworldDelay: ; 100dd2
	ld a, 30
	ld [OverworldDelay], a
	ret
; 100dd8

Function100dd8: ; 100dd8
	ld c, $01
	ld b, $03
	callba AdvanceMobileInactivityTimerAndCheckExpired
	jr c, .asm_100dfb
	ld c, $3c
	ld b, $01
	call Function10079c
	jr c, .asm_100dfb
	callba Function10032e
	ld a, [wcd2b]
	and a
	jr nz, .asm_100dfb
	xor a
	ret

.asm_100dfb
	scf
	ret
; 100dfd

MobileComms_CheckInactivityTimer: ; 100dfd
	ld a, [OverworldDelay]
	ld c, a
	ld a, 30
	sub c
	ld c, a
	ld b, 3
	push bc
	callba AdvanceMobileInactivityTimerAndCheckExpired ; useless to farcall
	pop bc
	jr c, .quit
	ld b, 1
	call Function10079c
	jr c, .quit
	call Function1009f3
	jr c, .quit
	callba Function10032e ; useless to farcall
	ld a, [wcd2b]
	and a
	jr nz, .quit
	xor a
	ret

.quit
	scf
	ret
; 100e2d

Function100e2d: ; 100e2d
	ld a, [OverworldDelay]
	ld c, a
	ld a, 30
	sub c
	ld c, a
	ld b, 3
	push bc
	callba AdvanceMobileInactivityTimerAndCheckExpired
	pop bc
	jr c, .asm_100e61
	ld b, 1
	call Function10079c
	jr c, .asm_100e61
	call Function1009f3
	jr c, .asm_100e61
	callba Function10032e
	ld a, [wcd2b]
	and a
	jr nz, .asm_100e61
	call Function100e63
	call Function100e84
	xor a
	ret

.asm_100e61
	scf
	ret
; 100e63

Function100e63: ; 100e63
	ld a, e
	cp $02
	ret nz
	call Function100db0
	ret nc
	ld de, SFX_ELEVATOR_END
	call PlaySFX
	ret
; 100e72

Function100e72: ; 100e72
	xor a
	ld hl, wcd29
	bit 0, [hl]
	jr z, .asm_100e7c
	ld a, $0a

.asm_100e7c
	ld [wcd67], a
	xor a
	ld [wcd68], a
	ret
; 100e84

Function100e84: ; 100e84
	ld a, [wcd67]
	ld hl, Jumptable_100e8c
	rst JumpTable
	ret
; 100e8c


Jumptable_100e8c: ; 100e8c (40:4e8c)
	dw Function100ea2
	dw Function100eae
	dw Function100eb4
	dw Function100eae
	dw Function100eb4
	dw Function100eae
	dw Function100eb4
	dw Function100eae
	dw Function100eb4
	dw Function100eae
	dw Function100ec4


Function100ea2: ; 100ea2 (40:4ea2)
	call Function100dc0
	ret nc
	ld hl, wcd29
	set 0, [hl]
	call Function100ec5


Function100eae: ; 100eae
	scf
	call Function100eca
	jr asm_100eb8

Function100eb4: ; 100eb4
	and a
	call Function100eca

asm_100eb8
	ld hl, wcd68
	inc [hl]
	ld a, [hl]
	cp $02
	ret c
	ld [hl], 0
	jr Function100ec5

Function100ec4: ; 100ec4
	ret

Function100ec5
	ld hl, wcd67
	inc [hl]
	ret
; 100eca

Function100eca: ; 100eca
	callba Mobile_InitPartyMenuBGPal7
	call Function100ed4
	ret
; 100ed4

Function100ed4: ; 100ed4
	callba ApplyPals
	ld a, $01
	ld [hCGBPalUpdate], a
	ret
; 100edf

Function100edf: ; 100edf
	ld hl, Unknown_100fc0
	ld c, 1
	jr asm_100f02

Function100ee6: ; 100ee6
	ld hl, Unknown_100fc0
	ld c, 2
	jr asm_100f02

Function100eed: ; 100eed
	ld hl, Unknown_100feb
	ld c, 1
	jr asm_100f02

Function100ef4: ; 100ef4
	ld hl, Unknown_100ff3
	ld c, 1
	jr asm_100f02

Function100efb: ; 100efb
	ld hl, Unknown_10102c
	ld c, 1
	jr asm_100f02

asm_100f02:
	ld a, c
	ld [StringBuffer2], a
	; someting that was previously stored in de gets backed up to here
	ld a, e
	ld [StringBuffer2 + 1], a
	ld a, d
	ld [StringBuffer2 + 2], a
	; empty this
	xor a
	ld [StringBuffer2 + 4], a
	ld [StringBuffer2 + 5], a
.loop
	ld a, [hl]
	cp $ff
	jr z, .done
	ld [StringBuffer2 + 3], a ; bank
	push hl
	inc hl
	; addr 1
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	; size
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld b, a
	; addr 2
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call Function100f3d
	; next line
	pop hl
	ld de, 7
	add hl, de
	jr .loop

.done
	; recover the values into bc
	ld a, [StringBuffer2 + 4]
	ld c, a
	ld a, [StringBuffer2 + 5]
	ld b, a
	ret
; 100f3d

Function100f3d: ; 100f3d
	; parameter
	ld a, [StringBuffer2]
	cp $02
	jr z, .two
	cp $01
	jr z, .one
	cp $03
	jr z, .three
	ret

.three
	; what was once in de gets copied to hl,
	; modified by Function100f8d, and put back
	; into this backup
	ld a, [StringBuffer2 + 1]
	ld l, a
	ld a, [StringBuffer2 + 2]
	ld h, a
	call Function100f8d
	ld a, l
	ld [StringBuffer2 + 1], a
	ld a, h
	ld [StringBuffer2 + 2], a
	ret

.two
	; hl gets backed up to de, then
	; do the same as in .three
	ld d, h
	ld e, l
	ld a, [StringBuffer2 + 1]
	ld l, a
	ld a, [StringBuffer2 + 2]
	ld h, a
	call Function100f8d
	ld a, l
	ld [StringBuffer2 + 1], a
	ld a, h
	ld [StringBuffer2 + 2], a
	ret

.one
	; de gets copied to hl, then
	; load the backup into de,
	; finally run Function100f8d
	; and store the de result
	ld h, d
	ld l, e
	ld a, [StringBuffer2 + 1]
	ld e, a
	ld a, [StringBuffer2 + 2]
	ld d, a
	call Function100f8d
	ld a, e
	ld [StringBuffer2 + 1], a
	ld a, d
	ld [StringBuffer2 + 2], a
	ret
; 100f8d

Function100f8d: ; 100f8d
	push hl
	ld a, [StringBuffer2 + 4]
	ld l, a
	ld a, [StringBuffer2 + 5]
	ld h, a
	add hl, bc
	ld a, l
	ld [StringBuffer2 + 4], a
	ld a, h
	ld [StringBuffer2 + 5], a
	pop hl
	ld a, [StringBuffer2 + 3]
	bit 7, a
	res 7, a
	jr z, .sram
	and a
	jr nz, .far_wram
	call CopyBytes
	ret

.far_wram
	and $7f
	call FarCopyWRAM
	ret

.sram
	call GetSRAMBank
	call CopyBytes
	call CloseSRAM
	ret
; 100fc0

Unknown_100fc0: ; 100fc0
	; first byte:
	;     Bit 7 set: Not SRAM
	;     Lower 7 bits: Bank
	; Address, size (dw), address
	dbwww $80, PlayerName, NAME_LENGTH, OTPlayerName
	dbwww $80, PartyCount, 1 + PARTY_LENGTH + 1, OTPartyCount
	dbwww $80, PlayerID, 2, OTPlayerID
	dbwww $80, PartyMons, PARTYMON_STRUCT_LENGTH * PARTY_LENGTH, OTPartyMons
	dbwww $80, PartyMonOT, NAME_LENGTH * PARTY_LENGTH, OTPartyMonOT
	dbwww $80, PartyMonNicknames, PKMN_NAME_LENGTH * PARTY_LENGTH, OTPartyMonNicknames
	db -1

Unknown_100feb: ; 100feb
	dbwww $00, sPartyMail, MAIL_STRUCT_LENGTH * PARTY_LENGTH, NULL
	db -1

Unknown_100ff3: ; 100ff3
	dbwww $80, wdc41, 1, NULL
	dbwww $80, PlayerName, NAME_LENGTH, NULL
	dbwww $80, PlayerName, NAME_LENGTH, NULL
	dbwww $80, PlayerID, 2, NULL
	dbwww $80, wSecretID, 2, NULL
	dbwww $80, PlayerGender, 1, NULL
	dbwww $04, $a603, 8, NULL
	dbwww $04, $a007, PARTYMON_STRUCT_LENGTH, NULL
	db -1

Unknown_10102c: ; 10102c
	dbwww $80, OTPlayerName, NAME_LENGTH, NULL
	dbwww $80, OTPlayerID, 2, NULL
	dbwww $80, OTPartyMonNicknames, PKMN_NAME_LENGTH * PARTY_LENGTH, NULL
	dbwww $80, OTPartyMonOT, NAME_LENGTH * PARTY_LENGTH, NULL
	dbwww $80, OTPartyMons, PARTYMON_STRUCT_LENGTH * PARTY_LENGTH, NULL
	db -1
; 10104f

Function101050: ; 101050
	call Function10107d
	ld a, [OTPartyCount]
rept 2 ; ???
	ld hl, wc608
endr
	ld bc, wc7bb - wc608
	call Function1010de
	ld hl, wc7bb
	ld [hl], e
	inc hl
	ld [hl], d
	ld a, $07
	call GetSRAMBank
	ld hl, wc608
	ld de, $a001
	ld bc, wc7bd - wc608
	call CopyBytes
	call CloseSRAM
	ret
; 10107d

Function10107d: ; 10107d
	xor a
	ld hl, wc608
	ld bc, wc7bd - wc608
	call ByteFill
	ld hl, OTPlayerName
	ld de, wc608
	ld bc, NAME_LENGTH
	call CopyBytes
	ld hl, wd271
	ld a, [hli]
	ld [wc608 + 11], a
	ld a, [hl]
	ld [wc608 + 12], a
	ld hl, OTPartyMonNicknames
	ld de, wc608 + 13
	ld bc, NAME_LENGTH
	call .CopyAllFromOT
	ld hl, OTPartyMonOT
	ld de, OTClassName + 1
	ld bc, NAME_LENGTH
	call .CopyAllFromOT
	ld hl, OTPartyMon1Species
	ld de, $c699
	ld bc, PARTYMON_STRUCT_LENGTH
	call .CopyAllFromOT
	ld a, $50
	ld [wc7b9], a
	ld a, $33
	ld [wc7ba], a
	ret
; 1010cd

.CopyAllFromOT: ; 1010cd
	push hl
	ld hl, 0
	ld a, [OTPartyCount]
	call AddNTimes
	ld b, h
	ld c, l
	pop hl
	call CopyBytes
	ret
; 1010de

Function1010de: ; 1010de
	push hl
	push bc
	ld de, 0
.loop
	ld a, [hli]
	add e
	ld e, a
	ld a, d
	adc 0
	ld d, a
	dec bc
	ld a, b
	or c
	jr nz, .loop
	pop bc
	pop hl
	ret
; 1010f2

LoadSelectedPartiesForColosseum: ; 1010f2
	xor a
	ld hl, StringBuffer2
	ld bc, 9
	call ByteFill
	ld hl, wPlayerMonSelection
	ld de, PartyCount
	call .CopyThreeSpecies
	ld hl, wPlayerMonSelection
	ld de, PartyMon1Species
	call .CopyPartyStruct
	ld hl, wPlayerMonSelection
	ld de, PartyMonOT
	call .CopyName
	ld hl, wPlayerMonSelection
	ld de, PartyMonNicknames
	call .CopyName
	ld hl, wOTMonSelection
	ld de, OTPartyCount
	call .CopyThreeSpecies
	ld hl, wOTMonSelection
	ld de, OTPartyMon1Species
	call .CopyPartyStruct
	ld hl, wOTMonSelection
	ld de, OTPartyMonOT
	call .CopyName
	ld hl, wOTMonSelection
	ld de, OTPartyMonNicknames
	call .CopyName
	ret
; 101145

.CopyThreeSpecies: ; 101145
; Load the 3 choices to the buffer
	push de
	ld bc, StringBuffer2 + 6
	xor a
.party_loop
	push af
	call .GetNthSpecies
	ld [bc], a
	inc bc
	pop af
	inc a
	cp 3
	jr nz, .party_loop
	pop de
; Copy the 3 choices to the party
	ld a, 3
	ld [de], a
	inc de
	ld hl, StringBuffer2 + 6
	ld bc, 3
	call CopyBytes
	ld a, $ff
	ld [de], a
	ret
; 101168

.GetNthSpecies: ; 101168
; Preserves hl and de
; Get the index of the Nth selection
	push hl
	add l
	ld l, a
	ld a, h
	adc 0
	ld h, a
	ld a, [hl]
	pop hl
; Get the corresponding species
	push de
	inc de
	add e
	ld e, a
	ld a, d
	adc 0
	ld d, a
	ld a, [de]
	pop de
	ret
; 10117c

.CopyPartyStruct: ; 10117c
	ld bc, PARTYMON_STRUCT_LENGTH
	jr .ContinueCopy

.CopyName: ; 101181
	ld bc, NAME_LENGTH

.ContinueCopy:
	; Copy, via wc608...
	ld a, wc608 % $100
	ld [StringBuffer2], a
	ld a, wc608 / $100
	ld [StringBuffer2 + 1], a
	; ... bc bytes...
	ld a, c
	ld [StringBuffer2 + 2], a
	ld a, b
	ld [StringBuffer2 + 3], a
	; ... to de...
	ld a, e
	ld [StringBuffer2 + 4], a
	ld a, d
	ld [StringBuffer2 + 5], a
	; ... 3 times.
	ld a, 3
.big_copy_loop
	push af
	ld a, [hli]
	push hl
	push af
	call .GetDestinationAddress
	call .GetCopySize
	pop af
	call AddNTimes
	ld a, [StringBuffer2]
	ld e, a
	ld a, [StringBuffer2 + 1]
	ld d, a
	call CopyBytes
	ld a, e
	ld [StringBuffer2], a
	ld a, d
	ld [StringBuffer2 + 1], a
	pop hl
	pop af
	dec a
	jr nz, .big_copy_loop
	call .GetCopySize
	ld a, 3
	ld hl, 0
	call AddNTimes
	ld b, h
	ld c, l
	call .GetDestinationAddress
	ld d, h
	ld e, l
	ld hl, wc608
	call CopyBytes
	ret
; 1011df

.GetDestinationAddress: ; 1011df
	ld a, [StringBuffer2 + 4]
	ld l, a
	ld a, [StringBuffer2 + 5]
	ld h, a
	ret
; 1011e8

.GetCopySize: ; 1011e8
	ld a, [StringBuffer2 + 2]
	ld c, a
	ld a, [StringBuffer2 + 3]
	ld b, a
	ret
; 1011f1

Function1011f1: ; 1011f1
	ld a, $04
	call GetSRAMBank
	ld a, [$a60c]
	ld [wdc41], a
	call CloseSRAM
	ld hl, wdc41
	res 4, [hl]
	ld hl, GameTimerPause
	bit 7, [hl]
	jr z, .skip
	ld hl, wdc41
	set 4, [hl]

.skip
	call Function10209c
	xor a
	ld [wdc5f], a
	ld [wdc60], a
	ld a, LINK_MOBILE
	ld [wLinkMode], a
	ret
; 101220

Function101220: ; 101220
	xor a
	ld [wLinkMode], a
	ret
; 101225

Function101225: ; 101225
	ld d, 1
	ld e, BANK(Jumptable_101297)
	ld bc, Jumptable_101297
	call Function100000
	jr Function10123d

Function101231: ; 101231
	ld d, 2
	ld e, BANK(Jumptable_101297)
	ld bc, Jumptable_101297
	call Function100000
	jr Function10123d

Function10123d: ; 10123d
	xor a
	ld [ScriptVar], a
	ld a, c
	ld hl, Jumptable_101247
	rst JumpTable
	ret
; 101247

Jumptable_101247: ; 101247
	dw Function101251
	dw Function10127d
	dw Function10127c
	dw Function10126c
	dw Function101265
; 101251

Function101251: ; 101251
	call UpdateSprites
	call RefreshScreen
	ld hl, UnknownText_0x1021f4
	call Function1021e0
	call Function1020ea
	ret c
	call Function102142
	ret
; 101265

Function101265: ; 101265
	ld hl, UnknownText_0x1021ef
	call Function1021e0
	ret
; 10126c

Function10126c: ; 10126c
	call UpdateSprites
	callba Script_reloadmappart
	ld hl, UnknownText_0x1021f4
	call Function1021e0
	ret
; 10127c

Function10127c: ; 10127c
	ret
; 10127d

Function10127d: ; 10127d
	ret
; 10127e

Function10127e: ; 10127e
	ld a, [wdc5f]
	and a
	jr z, .zero
	cp 1
	ld c, $27
	jr z, .load
	cp 2
	ld c, $37
	jr z, .load
.zero
	ld c, 0
.load
	ld a, c
	ld [wMobileCommsJumptableIndex], a
	ret
; 101297

Jumptable_101297: ; 101297
	dw Function101a97                         ; 00
	dw Function101ab4                         ; 01
	dw Function101475                         ; 02
	dw Function101b0f                         ; 03
	dw Function101438                         ; 04
	dw Function101b2b                         ; 05
	dw Function101b59                         ; 06
	dw Function101475                         ; 07
	dw Function101b70                         ; 08
	dw Function101438                         ; 09
	dw Function101b8f                         ; 0a
	dw Function101d7b                         ; 0b
	dw Function101d95                         ; 0c
	dw Function101475                         ; 0d
	dw Function101db2                         ; 0e
	dw Function101e4f                         ; 0f
	dw Function101475                         ; 10
	dw Function101e64                         ; 11
	dw Function101e4f                         ; 12
	dw Function101475                         ; 13
	dw Function101e64                         ; 14
	dw Function101d95                         ; 15
	dw Function101475                         ; 16
	dw Function101db2                         ; 17
	dw Function101dd0                         ; 18
	dw Function101de3                         ; 19
	dw Function101e39                         ; 1a
	dw Function101e09                         ; 1b
	dw Function101e4f                         ; 1c
	dw Function101475                         ; 1d
	dw Function101e64                         ; 1e
	dw Function101d95                         ; 1f
	dw Function101475                         ; 20
	dw Function101db2                         ; 21
	dw Function101e09                         ; 22
	dw Function101e31                         ; 23
	dw Function101bc8                         ; 24
	dw Function101438                         ; 25
	dw Function101be5                         ; 26
	dw Function101ac6                         ; 27
	dw Function101ab4                         ; 28
	dw Function101475                         ; 29
	dw Function101c11                         ; 2a
	dw Function1014f4                         ; 2b
	dw Function101cc8                         ; 2c
	dw Function1014e2                         ; 2d
	dw Function1014e2                         ; 2e
	dw Function101d10                         ; 2f
	dw Function101d2a                         ; 30
	dw Function101d2a                         ; 31
	dw Function101507                         ; 32
	dw Function10156d                         ; 33
	dw Function101557                         ; 34
	dw Function10158a                         ; 35
	dw Function101c42                         ; 36
	dw Function101aed                         ; 37
	dw Function101ab4                         ; 38
	dw Function101475                         ; 39
	dw Function101c2b                         ; 3a
	dw Function1014f4                         ; 3b
	dw Function101cdf                         ; 3c
	dw Function1014e2                         ; 3d
	dw Function1014e2                         ; 3e
	dw Function101d1e                         ; 3f
	dw Function101d2a                         ; 40
	dw Function101d2a                         ; 41
	dw Function101507                         ; 42
	dw Function10156d                         ; 43
	dw Function101544                         ; 44
	dw Function10158a                         ; 45
	dw Function101c42                         ; 46
	dw Function101c50                         ; 47
	dw Function1014ce                         ; 48
	dw Function101cf6                         ; 49
	dw Function101826                         ; 4a
	dw Function1017e4                         ; 4b
	dw Function1017f1                         ; 4c
	dw Function1018a8                         ; 4d
	dw Function1018d6                         ; 4e
	dw Function1017e4                         ; 4f
	dw Function1017f1                         ; 50
	dw Function1018e1                         ; 51
	dw Function1015df                         ; 52
	dw Function10167d                         ; 53
	dw Function10168a                         ; 54
	dw Function10162a                         ; 55
	dw Function1015be                         ; 56
	dw Function10167d                         ; 57
	dw Function10168a                         ; 58
	dw Function10161f                         ; 59
	dw Function10159d                         ; 5a
	dw Function10167d                         ; 5b
	dw Function10168a                         ; 5c
	dw Function101600                         ; 5d
	dw Function101d03                         ; 5e
	dw Function101d6b                         ; 5f
	dw Function10159d                         ; 60
	dw Function1014ce                         ; 61
	dw Function10168e                         ; 62
	dw Function101600                         ; 63
	dw Function101913                         ; 64
	dw Function10194b                         ; 65
	dw _SelectMonsForMobileBattle             ; 66
	dw Function1017e4                         ; 67
	dw Function1017f5                         ; 68
	dw _StartMobileBattle                     ; 69
	dw Function101537                         ; 6a
	dw Function101571                         ; 6b
	dw Function101c92                         ; 6c
	dw Function10152a                         ; 6d
	dw Function101571                         ; 6e
	dw Function101a4f                         ; 6f
	dw Function101cbc                         ; 70
	dw Function101c62                         ; 71
	dw Function101537                         ; 72
	dw Function101571                         ; 73
	dw Function101c92                         ; 74
	dw Function10152a                         ; 75
	dw Function101571                         ; 76
	dw Function101ca0                         ; 77
	dw Function101475                         ; 78
	dw Function101cbc                         ; 79
; 10138b

Function10138b: ; 10138b
	callba Function8adcc
	ld c, 0
	jr c, .asm_101396
	inc c

.asm_101396
	sla c
	ld a, [wcd2f]
	and a
	jr z, .asm_10139f
	inc c

.asm_10139f
	sla c
	ld a, [wcd21]
	cp $01
	jr z, .asm_1013a9
	inc c

.asm_1013a9
	ret
; 1013aa

Function1013aa: ; 1013aa
	call ClearBGPalettes
	call Call_ExitMenu
	call ReloadTilesetAndPalettes
	callba Function106464
	call UpdateSprites
	call FinishExitMenu
	ret
; 1013c0

Function1013c0: ; 1013c0
	callba BlankScreen
	callba MobileFunc_106462
	callba Function106464
	call FinishExitMenu
	ret
; 1013d6

Function1013d6: ; 1013d6
	callba HDMATransferAttrMapAndTileMapToWRAMBank3
	ret
; 1013dd

Function1013dd: ; 1013dd
	call CGBOnly_LoadEDTile
	ret
; 1013e1

Function1013e1: ; 1013e1 ; unreferenced
	push de
	inc de
	ld b, a
	ld c, 0
.asm_1013e6
	inc c
	ld a, [hli]
	ld [de], a
	inc de
	and a
	jr z, .asm_1013f1
	dec b
	jr nz, .asm_1013e6
	scf

.asm_1013f1
	pop de
	ld a, c
	ld [de], a
	ret
; 1013f5

Function1013f5: ; 1013f5
	ld a, [hli]
	ld [de], a
	inc de
	ld c, a
.asm_1013f9
	ld a, [hli]
	ld [de], a
	inc de
	dec c
	jr nz, .asm_1013f9
	ret
; 101400

Function101400: ; 101400 ; unreferenced
	ld a, [de]
	inc de
	cp [hl]
	jr nz, asm_101416
	inc hl

Function101406: ; 101406
	ld c, a
	ld b, 0
.asm_101409
	ld a, [de]
	inc de
	cp [hl]
	jr nz, asm_101416
	inc hl
	dec bc
	ld a, b
	or c
	jr nz, .asm_101409
	and a
	ret

asm_101416
	scf
	ret
; 101418

Function101418: ; 101418
	call GetJoypad
	ld a, [hJoyDown]
	and SELECT + A_BUTTON
	cp SELECT + A_BUTTON
	jr z, .asm_101425
	xor a
	ret

.asm_101425
	ld a, $f7
	ld [wcd2b], a
	scf
	ret
; 10142c

Function10142c: ; 10142c
	ld a, $01
	ld [wc305], a
	callba Function115e18
	ret
; 101438

Function101438: ; 101438
	ld hl, wcd29
	set 6, [hl]
	ld a, [wcd26]
	ld hl, Jumptable_101457
	rst JumpTable
	ld a, [wcd26]
	bit 7, a
	ret z
	ld a, 0
	ld [wcd26], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101457

Jumptable_101457: ; 101457
	dw Function10145b
	dw Function101467
; 10145b

Function10145b: ; 10145b
	ld a, $3c
	ld [wcd42], a
	ld a, [wcd26]
	inc a
	ld [wcd26], a

Function101467: ; 101467
	ld hl, wcd42
	dec [hl]
	ret nz
	ld a, [wcd26]
	set 7, a
	ld [wcd26], a
	ret
; 101475

Function101475: ; 101475
	ld hl, wcd29
	set 6, [hl]
	ld a, [wcd26]
	ld hl, Jumptable_101494
	rst JumpTable
	ld a, [wcd26]
	bit 7, a
	ret z
	ld a, 0
	ld [wcd26], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101494

Jumptable_101494: ; 101494
	dw Function10149a
	dw Function1014a6
	dw Function1014b7
; 10149a

Function10149a: ; 10149a
	ld a, $28
	ld [wcd42], a
	ld a, [wcd26]
	inc a
	ld [wcd26], a

Function1014a6: ; 1014a6
	ld hl, wcd42
	dec [hl]
	ret nz
	ld a, $50
	ld [wcd42], a
	ld a, [wcd26]
	inc a
	ld [wcd26], a

Function1014b7: ; 1014b7
	call GetJoypad
	ld a, [hJoyPressed]
	and $03
	jr nz, .asm_1014c5
	ld hl, wcd42
	dec [hl]
	ret nz

.asm_1014c5
	ld a, [wcd26]
	set 7, a
	ld [wcd26], a
	ret
; 1014ce

Function1014ce: ; 1014ce
	callba Function100720
	callba StartMobileInactivityTimer
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 1014e2

Function1014e2: ; 1014e2
	ld hl, wcd29
	set 6, [hl]
	ld a, 0
	ld [wcd26], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 1014f4

Function1014f4: ; 1014f4
	callba EnableMobile
	ld hl, wcd29
	set 6, [hl]
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101507

Function101507: ; 101507
	ld de, wcd30
	ld hl, $40
	ld bc, $40
	ld a, $02
	call Function3e32
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 10151d

Function10151d: ; 10151d ; unreferenced
	ld a, $34
	call Function3e32
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 10152a

Function10152a: ; 10152a
	ld a, $36
	call Function3e32
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101537

Function101537: ; 101537
	ld a, $0a
	call Function3e32
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101544

Function101544: ; 101544
	callba StartMobileInactivityTimer
	ld a, $12
	call Function3e32
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101557

Function101557: ; 101557
	callba StartMobileInactivityTimer
	ld hl, wcd53
	ld a, $08
	call Function3e32
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 10156d

Function10156d: ; 10156d
	call Function101418
	ret c

Function101571: ; 101571
	callba Function10032e
	ret c
	ret z
	ld a, e
	cp $01
	jr z, .asm_101582
	ld [wcd2b], a
	ret

.asm_101582
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 10158a

Function10158a: ; 10158a
	callba IncrementMobileInactivityTimerBy1Frame
	ld a, [wMobileInactivityTimerMinutes]
	cp $0a
	jr c, Function10156d
	ld a, $fb
	ld [wcd2b], a
	ret
; 10159d

Function10159d: ; 10159d
	ld de, wc608
	callba Function100edf
	ld de, wc608
	ld a, $05
	ld hl, w5_d800
	call Function10174c
	ld a, 0
	ld [wcd26], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 1015be

Function1015be: ; 1015be
	ld de, wc608
	callba Function100eed
	ld de, wc608
	ld a, $05
	ld hl, w5_d800
	call Function10174c
	ld a, 0
	ld [wcd26], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 1015df

Function1015df: ; 1015df
	ld de, wc608
	callba Function100ef4
	ld de, wc608
	ld a, $05
	ld hl, w5_d800
	call Function10174c
	ld a, 0
	ld [wcd26], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101600

Function101600: ; 101600
	ld hl, w5_d800
	ld de, wc608
	ld bc, $1e0
	ld a, $05
	call FarCopyWRAM
	ld de, wc608
	callba Function100ee6
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 10161f

Function10161f: ; 10161f
	call Function101649
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 10162a

Function10162a: ; 10162a
	call Function101663
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101635

Function101635: ; 101635
	ld de, wc608
	ld bc, $1e0
	call FarCopyWRAM
	ret
; 10163f

Function10163f: ; 10163f
	ld hl, wc608
	ld bc, $1e0
	call FarCopyWRAM
	ret
; 101649

Function101649: ; 101649
	ld a, $05
	ld hl, w5_d800
	call Function101635
	ld a, $05
	ld de, w5_da00
	call Function10163f
	ret
; 10165a

Function10165a: ; 10165a
	ld a, $05
	ld hl, w5_da00
	call Function101635
	ret
; 101663

Function101663: ; 101663
	ld a, $05
	ld hl, w5_d800
	call Function101635
	ld a, $05
	ld de, w5_dc00
	call Function10163f
	ret
; 101674

Function101674: ; 101674 ; unreferenced
	ld a, $05
	ld hl, w5_dc00
	call Function101635
	ret
; 10167d

Function10167d: ; 10167d
	ld a, 0
	ld [wcd26], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 10168a

Function10168a: ; 10168a
	call Function101418
	ret c

Function10168e: ; 10168e
	ld b, 0
	ld c, $01
	callba Function10079c
	ret c
	ld c, $01
	ld b, $03
	callba AdvanceMobileInactivityTimerAndCheckExpired
	ret c
	ld a, [wcd26]
	ld hl, Jumptable_1016c3
	rst JumpTable
	ld hl, wcd29
	set 6, [hl]
	ld a, [wcd26]
	bit 7, a
	ret z
	ld a, 0
	ld [wcd26], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 1016c3

Jumptable_1016c3: ; 1016c3
	dw Function1016cf
	dw Function1016de
	dw Function1016f8
	dw Function101705
	dw Function101719
	dw Function101724
; 1016cf

Function1016cf: ; 1016cf
	ld hl, wcd3a
	inc [hl]
	call Function10176f
	ld a, [wcd26]
	inc a
	ld [wcd26], a
	ret
; 1016de

Function1016de: ; 1016de
	call Function10177b
	jr nc, .asm_1016eb
	ld a, [wcd26]
	inc a
	ld [wcd26], a
	ret

.asm_1016eb
	ld a, $ff
	ld [wcd39], a
	ld a, [wcd26]
	inc a
	ld [wcd26], a
	ret
; 1016f8

Function1016f8: ; 1016f8
	ld a, 0
	ld [wcd27], a
	ld a, [wcd26]
	inc a
	ld [wcd26], a
	ret
; 101705

Function101705: ; 101705
	callba Function100382
	ld a, [wcd27]
	bit 7, a
	ret z
	ld a, [wcd26]
	inc a
	ld [wcd26], a
	ret
; 101719

Function101719: ; 101719
	call Function1017c7
	ld a, [wcd26]
	inc a
	ld [wcd26], a
	ret
; 101724

Function101724: ; 101724
	ld a, [wcd39]
	cp $ff
	jr z, .asm_101731
	ld a, 0
	ld [wcd26], a
	ret

.asm_101731
	ld a, [wcd26]
	set 7, a
	ld [wcd26], a
	ret
; 10173a

Unknown_10173a:
	db $50

Function10173b: ; 10173b
	push bc
	push af
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [Unknown_10173a]
	ld c, a
	ld b, 0
	pop af
	call AddNTimes
	pop bc
	ret
; 10174c

Function10174c: ; 10174c
	ld [wcd3d], a
	ld a, l
	ld [wcd3e], a
	ld a, h
	ld [wcd3f], a
	ld a, e
	ld [wcd3b], a
	ld a, d
	ld [wcd3c], a
	ld a, c
	ld [wcd40], a
	ld a, b
	ld [wcd41], a
	xor a
	ld [wcd39], a
	ld [wcd3a], a
	ret
; 10176f

Function10176f: ; 10176f
	ld hl, wccb4
	ld bc, $54
	ld a, $11
	call ByteFill
	ret
; 10177b

Function10177b: ; 10177b
	ld a, [Unknown_10173a]
	ld c, a
	ld b, 0
	ld a, [wcd3a]
	ld hl, 0
	call AddNTimes
	ld e, l
	ld d, h
	ld hl, wcd40
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, l
	sub e
	ld l, a
	ld a, h
	sbc d
	ld h, a
	jr c, .asm_1017a0
	add hl, bc
	call Function1017b0
	scf
	ret

.asm_1017a0
	ld a, $ff
	ld [wcd39], a
	add hl, bc
	ld a, h
	or l
	ret z
	ld c, l
	ld b, h
	call Function1017b0
	xor a
	ret
; 1017b0

Function1017b0: ; 1017b0
	ld a, c
	ld [wccb4], a
	push bc
	ld a, [wcd3a]
	dec a
	ld hl, wcd3b
	call Function10173b
	pop bc
	ld de, wccb5
	call CopyBytes
	ret
; 1017c7

Function1017c7: ; 1017c7
	ld a, [wcc60]
	ld c, a
	ld b, 0
	ld a, [wcd3a]
	dec a
	ld hl, wcd3e
	call Function10173b
	ld e, l
	ld d, h
	ld hl, wcc61
	ld a, [wcd3d]
	call FarCopyWRAM
	and a
	ret
; 1017e4

Function1017e4: ; 1017e4
	ld a, 0
	ld [wcd27], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 1017f1

Function1017f1: ; 1017f1
	call Function101418
	ret c

Function1017f5: ; 1017f5
	ld b, 0
	ld c, $01
	callba Function10079c
	ret c
	ld c, $01
	ld b, $03
	callba AdvanceMobileInactivityTimerAndCheckExpired
	ret c
	callba Function100382
	ld a, [wcd27]
	bit 7, a
	jr nz, .next
	ld hl, wcd29
	set 6, [hl]
	ret

.next
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101826

Function101826: ; 101826
	ld a, [wcd21]
	cp $02
	jr z, .asm_101833
	cp $01
	jr z, .asm_101844
	jr .asm_101869

.asm_101833
	ld hl, Unknown_10186f
	ld de, wccb4
	call Function1013f5
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101844
	callba Function103654
	ld a, c
	ld hl, Unknown_101882
	cp $01
	jr z, .asm_10185b
	ld hl, Unknown_101895
	cp $02
	jr z, .asm_10185b
	jr .asm_101869

.asm_10185b
	ld de, wccb4
	call Function1013f5
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101869
	ld a, $fe
	ld [wcd2b], a
	ret
; 10186f


SECTION "ascii 10186f", ROMX

	charmap " ", $20 ; revert to ascii

Unknown_10186f:
	db .end - @
	db $19, $73, $09, $13, "trade_crystal"
.end	db 0

Unknown_101882:
	db .end - @
	db $19, $67, $10, $01, "free__crystal"
.end	db 0

Unknown_101895:
	db .end - @
	db $19, $67, $10, $01, "limit_crystal"
.end	db 0
; 1018a8


SECTION "bank40_3", ROMX

Function1018a8: ; 1018a8
	ld hl, wccb5
	ld de, wcc61
	ld a, $04
	call Function101406
	jr c, .asm_1018d0
	ld hl, wccb9
	ld de, wcc65
	ld a, $06
	call Function101406
	jr c, .asm_1018ca
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_1018ca
	ld a, $f6
	ld [wcd2b], a
	ret

.asm_1018d0
	ld a, $f5
	ld [wcd2b], a
	ret
; 1018d6

Function1018d6: ; 1018d6
	call Function1018ec
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 1018e1

Function1018e1: ; 1018e1
	call Function1018fb
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 1018ec

Function1018ec: ; 1018ec
	ld a, $0a
	ld hl, wccb4
	ld [hli], a
	ld c, a
.asm_1018f3
	call Random
	ld [hli], a
	dec c
	jr nz, .asm_1018f3
	ret
; 1018fb

Function1018fb: ; 1018fb
	ld a, [wcd2f]
	and a
	jr z, .asm_101906
	ld hl, wcc61
	jr .asm_101909

.asm_101906
	ld hl, wccb5

.asm_101909
	ld de, LinkBattleRNs
	ld bc, 10
	call CopyBytes
	ret
; 101913

Function101913: ; 101913
	ld hl, wcd2a
	set 0, [hl]
	xor a
	ld [wc30d], a
	ld hl, wcd29
	res 4, [hl]
	xor a
	ld [wc305], a
	ld hl, wcd29
	res 7, [hl]
	ld a, $90
	ld [hWY], a
	ld a, [wcd21]
	cp $01
	jr z, .asm_10193f
	cp $02
	jr z, .asm_101945
	ld a, $71
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_10193f
	ld a, $66
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101945
	ld a, $65
	ld [wMobileCommsJumptableIndex], a
	ret
; 10194b

Function10194b: ; 10194b
	call DisableSpriteUpdates
	call ClearSprites
	callba Function1021f9
	ld hl, wcd29
	bit 3, [hl]
	jr nz, .asm_101967
	call Function1013c0
	ld a, $71
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101967
	ld a, $60
	ld [wMobileCommsJumptableIndex], a
	ret
; 10196d

_SelectMonsForMobileBattle: ; 10196d
	callba BlankScreen
	callba Mobile_CommunicationStandby
	ld hl, wcd29
	set 5, [hl]
	ld hl, wcd2a
	set 6, [hl]
	ld a, $06
	ld [wccb4], a
	ld hl, wPlayerMonSelection
	ld de, wccb5
	ld bc, 3
	call CopyBytes
	ld hl, wcd6c
	ld a, [hli]
	ld [wccb8], a
	ld a, [hli]
	ld [wccb9], a
	ld a, [hl]
	ld [wccba], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 1019ab

_StartMobileBattle: ; 1019ab
	call CopyOtherPlayersBattleMonSelection
	callba Function100754
	xor a
	ld [wdc5f], a
	ld [wdc60], a
	callba BlankScreen
	call SpeechTextBox
	callba Function100846
	ld c, 120
	call DelayFrames
	callba ClearTileMap
	call .CopyOTDetails
	call StartMobileBattle
	ld a, [wcd2b]
	cp $fc
	jr nz, .asm_1019e6
	xor a
	ld [wcd2b], a
.asm_1019e6
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 1019ee

.CopyOTDetails: ; 1019ee
	ld a, [rSVBK]
	push af
	ld a, 5
	ld [rSVBK], a

	ld bc, w5_dc0d
	ld de, w5_dc11
	callba GetMobileOTTrainerClass

	pop af
	ld [rSVBK], a

	ld a, c
	ld [OtherTrainerClass], a
	ld hl, OTPlayerName
	ld de, OTClassName
	ld bc, NAME_LENGTH
	call CopyBytes
	ld a, [wcd2f]
	and a
	ld a, 2
	jr z, .got_link_player_number
	ld a, 1
.got_link_player_number
	ld [hLinkPlayerNumber], a
	ret
; 101a21

StartMobileBattle: ; 101a21
	; force stereo and fast text speed
	ld hl, Options
	ld a, [hl]
	push af
	and (1 << STEREO)
	or 1 ; 1 frame per character i.e. fast text
	ld [hl], a
	ld a, 1
	ld [wDisableTextAcceleration], a
	callba BattleIntro
	callba DoBattle
	callba ShowLinkBattleParticipantsAfterEnd
	xor a
	ld [wDisableTextAcceleration], a
	ld a, $ff
	ld [hLinkPlayerNumber], a
	pop af
	ld [Options], a
	ret
; 101a4f

Function101a4f: ; 101a4f
	ld a, 1
	ld [wDisableTextAcceleration], a
	callba DetermineMobileBattleResult
	xor a
	ld [wDisableTextAcceleration], a
	callba CleanUpBattleRAM
	callba LoadPokemonData
	call Function1013c0
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101a75

CopyOtherPlayersBattleMonSelection: ; 101a75
	ld hl, wcc61
	ld de, wOTMonSelection
	ld bc, 3
	call CopyBytes
	ld de, wcc64
	callba Function100772
	callba Function101050
	callba LoadSelectedPartiesForColosseum
	ret
; 101a97

Function101a97: ; 101a97
	callba Function115d99
	ld hl, wcd29
	set 7, [hl]
	ld c, $02
	call Function10142c
	ld hl, wcd29
	set 6, [hl]
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101ab4

Function101ab4: ; 101ab4
	ld e, $01
	call Function101ee4
	ld hl, wcd29
	set 5, [hl]
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101ac6

Function101ac6: ; 101ac6
	callba Function115d99
	ld hl, wcd29
	set 7, [hl]
	ld c, $02
	call Function10142c
	ld hl, wcd29
	set 6, [hl]
	xor a
	ld [wcd2f], a
	ld de, wdc42
	call Function102068
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101aed

Function101aed: ; 101aed
	callba Function115d99
	ld hl, wcd29
	set 7, [hl]
	ld c, $02
	call Function10142c
	ld hl, wcd29
	set 6, [hl]
	ld a, $01
	ld [wcd2f], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101b0f

Function101b0f: ; 101b0f
	ld c, 0
	call Function10142c
	ld e, $03
	call Function101ee4
	ld hl, wcd29
	set 5, [hl]
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ld a, 0
	ld [wcd26], a
	ret
; 101b2b

Function101b2b: ; 101b2b
	callba Function100579
	ld hl, wcd29
	set 2, [hl]
	ld a, [wcd26]
	bit 7, a
	ret z
	call Function1013dd
	ld a, 0
	ld [wcd26], a
	ld a, [wMenuCursorY]
	cp $01
	jr z, .asm_101b51
	ld a, $02
	ld [wcd2b], a
	ret

.asm_101b51
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101b59

Function101b59: ; 101b59
	ld c, $02
	call Function10142c
	ld e, $02
	call Function101ee4
	ld hl, wcd29
	set 5, [hl]
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101b70

Function101b70: ; 101b70
	ld c, $02
	call Function10142c
	ld e, $04
	call Function101ee4
	ld hl, wcd29
	set 5, [hl]
	call UpdateSprites
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ld a, 0
	ld [wcd26], a
	ret
; 101b8f

Function101b8f: ; 101b8f
	callba Function1005c3
	ld hl, wcd29
	set 2, [hl]
	ld a, [wcd26]
	bit 7, a
	ret z
	call Function1013dd
	ld a, 0
	ld [wcd26], a
	ld a, [wMenuCursorY]
	cp $01
	jr z, .asm_101bbc
	ld a, $01
	ld [wcd2f], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101bbc
	xor a
	ld [wcd2f], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101bc8

Function101bc8: ; 101bc8
	ld c, $02
	call Function10142c
	ld e, $08
	call Function101ee4
	call Function102048
	call Function1013dd
	ld a, 0
	ld [wcd26], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101be5

Function101be5: ; 101be5
	callba Function100579
	ld hl, wcd29
	set 2, [hl]
	ld a, [wcd26]
	bit 7, a
	ret z
	call Function1013dd
	ld a, 0
	ld [wcd26], a
	ld a, [wMenuCursorY]
	cp $01
	jr nz, .asm_101c0b
	ld a, $2a
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101c0b
	ld a, $02
	ld [wcd2b], a
	ret
; 101c11

Function101c11: ; 101c11
	ld a, $01
	ld [wdc5f], a
	ld e, $09
	call Function101ee4
	call Function102048
	ld hl, wcd29
	set 5, [hl]
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101c2b

Function101c2b: ; 101c2b
	ld a, $02
	ld [wdc5f], a
	ld e, $07
	call Function101ee4
	ld hl, wcd29
	set 5, [hl]
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101c42

Function101c42: ; 101c42
	ld hl, wcd2a
	set 1, [hl]
	call Function100665
	ld a, $47
	ld [wMobileCommsJumptableIndex], a
	ret
; 101c50

Function101c50: ; 101c50
	ld e, $0a
	call Function101ee4
	ld hl, wcd29
	set 2, [hl]
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101c62

Function101c62: ; 101c62
	callba Function115d99
	ld hl, wcd29
	set 7, [hl]
	ld c, $01
	call Function10142c
	xor a
	ld [wc30d], a
	ld hl, wcd29
	res 4, [hl]
	ld e, $0b
	call Function101ee4
	ld hl, wcd29
	set 5, [hl]
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ld a, 0
	ld [wcd26], a
	ret
; 101c92

Function101c92: ; 101c92
	callba Function100675
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101ca0

Function101ca0: ; 101ca0
	ld c, $02
	call Function10142c
	ld e, $0c
	call Function101ee4
	ld hl, wcd29
	set 5, [hl]
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ld a, 0
	ld [wcd26], a
	ret
; 101cbc

Function101cbc: ; 101cbc
	ld a, $01
	ld [wcd2b], a
	ret
; 101cc2

Function101cc2: ; 101cc2 ; unreferenced
	ld a, $02
	ld [wcd2b], a
	ret
; 101cc8

Function101cc8: ; 101cc8
	ld a, $01
	ld [wc314], a
	ld a, $01
	ld [wc30d], a
	ld hl, wcd29
	set 4, [hl]
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101cdf

Function101cdf: ; 101cdf
	ld a, $06
	ld [wc314], a
	ld a, $01
	ld [wc30d], a
	ld hl, wcd29
	set 4, [hl]
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101cf6

Function101cf6: ; 101cf6
	ld a, $0b
	ld [wc314 + 1], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101d03

Function101d03: ; 101d03
	ld a, $0e
	ld [wc314 + 1], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101d10

Function101d10: ; 101d10
	ld c, $01
	call Function10142c
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	jr Function101d2a

Function101d1e: ; 101d1e
	ld c, $03
	call Function10142c
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a

Function101d2a: ; 101d2a
	call Function101418
	ret c
	ld hl, wcd29
	set 6, [hl]
	ld a, [wcd26]
	ld hl, Jumptable_101d4d
	rst JumpTable
	ld a, [wcd26]
	bit 7, a
	ret z
	ld a, 0
	ld [wcd26], a
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101d4d

Jumptable_101d4d: ; 101d4d
	dw Function101d51
	dw Function101d5d
; 101d51

Function101d51: ; 101d51
	ld a, $3c
	ld [wcd42], a
	ld a, [wcd26]
	inc a
	ld [wcd26], a

Function101d5d: ; 101d5d
	ld hl, wcd42
	dec [hl]
	ret nz
	ld a, [wcd26]
	set 7, a
	ld [wcd26], a
	ret
; 101d6b

Function101d6b: ; 101d6b
	ld a, [wc30d]
	and a
	ret nz
	ld hl, wcd29
	res 4, [hl]
	ld a, $64
	ld [wMobileCommsJumptableIndex], a
	ret
; 101d7b

Function101d7b: ; 101d7b
	callba Function10138b
	ld b, 0
	ld hl, Unknown_101d8d
	add hl, bc
	ld c, [hl]
	ld a, c
	ld [wMobileCommsJumptableIndex], a
	ret
; 101d8d

Unknown_101d8d: ; 101d8d
	db $15, $15, $1f, $1f, $0c, $12, $3a, $3a
; 101d95

Function101d95: ; 101d95
	call Function101ee2
	call LoadStandardMenuDataHeader
	ld e, $0e
	call Function101ee4
	ld hl, wcd29
	set 5, [hl]
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ld a, 0
	ld [wcd26], a
	ret
; 101db2

Function101db2: ; 101db2
	callba Function103302
	call ExitMenu
	ld hl, wcd29
	set 5, [hl]
	jr c, .asm_101dca
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101dca
	ld a, $02
	ld [wcd2b], a
	ret
; 101dd0

Function101dd0: ; 101dd0
	ld hl, wdc41
	bit 1, [hl]
	jr nz, .asm_101ddd
	ld a, $19
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101ddd
	ld a, $1b
	ld [wMobileCommsJumptableIndex], a
	ret
; 101de3

Function101de3: ; 101de3
	call Function101ecc
	call Function101ead
	jr c, .asm_101df3
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101df3
	call Function101e98
	jr c, .asm_101e00
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101e00
	call Function101ed3
	ld a, $02
	ld [wcd2b], a
	ret
; 101e09

Function101e09: ; 101e09
	call Function101ead
	jr c, .asm_101e16
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101e16
	call Function101ecc
	call Function101e98
	push af
	call Function101ed3
	pop af
	jr c, .asm_101e2b
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101e2b
	ld a, $02
	ld [wcd2b], a
	ret
; 101e31

Function101e31: ; 101e31
	ld a, $3a
	ld [wMobileCommsJumptableIndex], a
	jp Function101c2b
; 101e39

Function101e39: ; 101e39
	call Function1020bf
	push af
	call Function101ed3
	pop af
	jr c, .asm_101e49
	ld a, $2a
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101e49
	ld a, $02
	ld [wcd2b], a
	ret
; 101e4f

Function101e4f: ; 101e4f
	ld e, $06
	call Function101ee4
	call Function1013d6
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ld a, 0
	ld [wcd26], a
	ret
; 101e64

Function101e64: ; 101e64
	call Function101ecc
	call Function1020a8
	push af
	call Function101ed3
	pop af
	jr c, .asm_101e77
	ld a, $24
	ld [wMobileCommsJumptableIndex], a
	ret

.asm_101e77
	ld hl, wcd29
	set 5, [hl]
	ld a, $02
	ld [wcd2b], a
	ret
; 101e82

Function101e82: ; 101e82 ; unreferenced
	call Function101ecc
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101e8d

Function101e8d: ; 101e8d ; unreferenced
	call Function101ed3
	ld a, [wMobileCommsJumptableIndex]
	inc a
	ld [wMobileCommsJumptableIndex], a
	ret
; 101e98

Function101e98: ; 101e98
	call ClearSprites
	callba Function8adb3
	ret c
	ld hl, GameTimerPause
	set 7, [hl]
	ld hl, wdc41
	set 4, [hl]
	ret
; 101ead

Function101ead: ; 101ead
	ld hl, GameTimerPause
	bit 7, [hl]
	jr nz, .asm_101ec8
	ld hl, wdc41
	bit 2, [hl]
	jr z, .asm_101eca
	ld a, [wcd2f]
	and a
	jr nz, .asm_101ec8
	ld hl, wdc41
	bit 1, [hl]
	jr z, .asm_101eca

.asm_101ec8
	xor a
	ret

.asm_101eca
	scf
	ret
; 101ecc

Function101ecc: ; 101ecc
	call Function101ee2
	call FadeToMenu
	ret
; 101ed3

Function101ed3: ; 101ed3
	call Function1013aa
	callba Function115d99
	ld hl, wcd29
	set 7, [hl]
	ret
; 101ee2

Function101ee2: ; 101ee2
	ld e, 0

Function101ee4: ; 101ee4
	ld d, 0
	ld hl, Unknown_101ef5
	add hl, de
	add hl, de
	ld a, [hli]
	ld d, [hl]
	ld e, a
	callba Function100504
	ret
; 101ef5

Unknown_101ef5: ; 101ef5
	dw String_101f13
	dw String_101f14
	dw String_101f32
	dw String_101f4f
	dw String_101f69
	dw String_101f81
	dw String_101f93
	dw String_101faa
	dw String_101fc5
	dw String_101fd2
	dw String_101fe1
	dw String_101fef
	dw String_102000
	dw String_10200c
	dw String_102014

String_101f13: ; 101f13
	db "@"

String_101f14: ; 101f14
	db   "モバイルアダプタを つかって"
	next "おともだちと つうしんします@"

String_101f32: ; 101f32
	db   "でんわを かけるひとには"
	next "つうわりょうきんが かかります@"

String_101f4f: ; 101f4f
	db   "モバイルアダプタの じゅんびは"
	next "できて いますか?@"

String_101f69: ; 101f69
	db   "あなたが おともだちに"
	next "でんわを かけますか?@"

String_101f81: ; 101f81
	db   "めいしフ,ルダーを"
	next "つかいますか?@"

String_101f93: ; 101f93
	db   "でんわばんごうを にゅうりょく"
	next "してください@"

String_101faa: ; 101faa
	db   "それでは おともだちからの"
	next "でんわを おまちします…@"

String_101fc5: ; 101fc5
	next "に でんわを かけます@"

String_101fd2: ; 101fd2
	next "に でんわを かけています@"

String_101fe1: ; 101fe1
	db   "でんわが つながりました!@"

String_101fef: ; 101fef
	db   "つうわを"
	next "しゅうりょう します…@"

String_102000: ; 102000
	db   "つうしん しゅうりょう@"

String_10200c: ; 10200c
	db   "つうわ じかん@"

String_102014: ; 102014
	db   "それでは つうしんの"
	next "せっていを してください@"
; 10202c

Function10202c: ; 10202c
	callba Function115d99
	ld hl, wcd29
	set 7, [hl]
	ld c, $02
	call Function10142c
	ld e, $0d
	call Function101ee4
	hlcoord 4, 4
	call Function100681
	ret
; 102048

Function102048: ; 102048
	call Function10204c
	ret
; 10204c

Function10204c: ; 10204c
	hlcoord 3, 2
	ld c, $10
	ld de, wcd53
.asm_102054
	ld a, [de]
	inc de
	and a
	jr z, .asm_102067
	sub $30
	jr c, .asm_102067
	cp $0a
	jr nc, .asm_102067
	add $f6
	ld [hli], a
	dec c
	jr nz, .asm_102054

.asm_102067
	ret
; 102068

Function102068: ; 102068
	ld hl, wcd53
	ld c, $08
.asm_10206d
	ld a, [de]
	call Function102080
	jr c, .asm_10207f
	ld a, [de]
	swap a
	call Function102080
	jr c, .asm_10207f
	inc de
	dec c
	jr nz, .asm_10206d

.asm_10207f
	ret
; 102080

Function102080: ; 102080
	and $0f
	cp $0f
	jr z, .asm_10208a
	add $30
	ld [hli], a
	ret

.asm_10208a
	ld [hl], 0
	scf
	ret
; 10208e

Function10208e: ; 10208e
	push de
	ld h, d
	ld l, e
	ld de, wdc42
	ld bc, 8
	call CopyBytes
	pop de
	ret
; 10209c

Function10209c: ; 10209c
	ld a, $ff
	ld hl, wdc42
	ld bc, 8
	call ByteFill
	ret
; 1020a8

Function1020a8: ; 1020a8
	call Function10209c
	ld c, $01
	ld de, wdc42
	callba Function17a68f
	ret c
	call Function10208e
	call Function102068
	xor a
	ret
; 1020bf

Function1020bf: ; 1020bf
	call ClearSprites
	callba Function8aba9
	ld a, c
	and a
	jr z, .asm_1020e8
	dec a
	ld hl, $a04c
	ld bc, $25
	call AddNTimes
	ld d, h
	ld e, l
	ld a, $04
	call GetSRAMBank
	call Function10208e
	call Function102068
	call CloseSRAM
	xor a
	ret

.asm_1020e8
	scf
	ret
; 1020ea

Function1020ea: ; 1020ea
	ld hl, wdc41
	bit 4, [hl]
	jr z, .quit
	ld hl, wdc41
	bit 2, [hl]
	jr nz, .quit
	call Function10218d
	ld hl, wc608
	bit 4, [hl]
	jr z, .quit
	ld hl, wc608
	bit 2, [hl]
	jr nz, .quit
	call Function102112
	jr z, .quit
	and a
	ret

.quit
	scf
	ret
; 102112

Function102112: ; 102112
	ld a, $04
	call GetSRAMBank
	ld hl, $a041
	ld c, 40
.outer_loop
	push hl
	ld de, $c60f
	ld b, 31
.inner_loop
	ld a, [de]
	cp [hl]
	jr nz, .not_matching
	inc de
	inc hl
	dec b
	jr nz, .inner_loop
	pop hl
	xor a
	jr .done

.not_matching
	pop hl
	ld de, 37
	add hl, de
	dec c
	jr nz, .outer_loop
	ld a, $01
	and a
	jr .done ; useless jr

.done
	push af
	call CloseSRAM
	pop af
	ret
; 102142

Function102142: ; 102142
	call Function10218d
	call Function102180
	ld hl, UnknownText_0x1021d1
	call MenuTextBox
	ld de, SFX_LEVEL_UP
	call PlaySFX
	call JoyWaitAorB
	call ExitMenu
	call Function10219f
	ld hl, UnknownText_0x1021d6
	call MenuTextBox
	call YesNoBox
	call ExitMenu
	jr c, .asm_10217c
	call Function1021b8
	jr c, .asm_10217c
	call Function10218d
	call Function102180
	ld hl, UnknownText_0x1021db
	call PrintText

.asm_10217c
	call Function1013d6
	ret
; 102180

Function102180: ; 102180
	ld hl, wc608 + 1
	ld de, StringBuffer2
	ld bc, 11
	call CopyBytes
	ret
; 10218d

Function10218d: ; 10218d
	ld hl, w5_dc00
	ld de, wc608
	ld bc, $26
	ld a, $05
	call FarCopyWRAM
	ld de, wc608 + 1 ; useless
	ret
; 10219f

Function10219f: ; 10219f
	call FadeToMenu
	call Function10218d
	ld de, wc608 + 1
	callba Function8ac4e
	call JoyWaitAorB
	call PlayClickSFX
	call Function1013aa
	ret
; 1021b8

Function1021b8: ; 1021b8
	call FadeToMenu
	call Function10218d
	ld de, wPlayerMoveStruct
	callba Function8ac70
	ld a, c
	ld [StringBuffer1], a
	push af
	call Function1013aa
	pop af
	ret
; 1021d1

UnknownText_0x1021d1: ; 1021d1
	text_jump UnknownText_0x1bd19a
	db "@"

UnknownText_0x1021d6: ; 1021d1
	text_jump UnknownText_0x1bd1ba
	db "@"

UnknownText_0x1021db: ; 1021d1
	text_jump UnknownText_0x1bd1dd
	db "@"
; 1021e0

Function1021e0: ; 1021e0
	call MenuTextBox
	call JoyWaitAorB
	call ExitMenu
	ret
; 1021ea

UnknownText_0x1021ea: ; 1021ea
	text_jump UnknownText_0x1bd201
	db "@"

UnknownText_0x1021ef:
	text_jump UnknownText_0x1bd211
	db "@"

UnknownText_0x1021f4:
	text_jump UnknownText_0x1bd223
	db "@"
; 1021f9

Function1021f9: ; 1021f9
	call Function102233
	ld a, $0 ; Function10234b
	ld [wcd49], a
	ld hl, wcd29
	bit 3, [hl]
	res 3, [hl]
	jr z, .asm_10220f
	ld a, $1 ; Function102361
	ld [wcd49], a

.asm_10220f
	call Function1022ca
	ld a, [wcd49]
	ld hl, Jumptable_1022f5
	rst JumpTable
	call Function102241
	call Function1022d0
	jr c, .asm_102231
	ld a, [wcd49]
	bit 7, a
	jr z, .asm_10220f
	xor a
	ld hl, wcd29
	bit 3, [hl]
	ret z
	scf
	ret

.asm_102231
	xor a
	ret
; 102233

Function102233: ; 102233
	ld hl, wcd49
	ld bc, 10
	xor a
	call ByteFill
	call Function10304f
	ret
; 102241

Function102241: ; 102241
	call Function10226a
	call Function102274
	call Function10224b
	ret
; 10224b

Function10224b: ; 10224b
	ld hl, wcd4b
	bit 1, [hl]
	jr nz, .asm_10225e
	bit 2, [hl]
	jr nz, .asm_10225e
	call DelayFrame
	call DelayFrame
	xor a
	ret

.asm_10225e
	res 1, [hl]
	res 2, [hl]
	callba Mobile_ReloadMapPart
	scf
	ret
; 10226a

Function10226a: ; 10226a
	ld hl, wcd4b
	bit 0, [hl]
	ret z
	call Function10305d
	ret
; 102274

Function102274: ; 102274
	ld hl, wcd4b
	bit 3, [hl]
	ret z
	res 3, [hl]
	ld de, 8
	call PlaySFX
	ret
; 102283

Function102283: ; 102283
	ld a, $01
	ld [AttrMapEnd], a
	ld hl, wcd4b
	set 0, [hl]
	ret
; 10228e

Function10228e: ; 10228e
	xor a
	ld [AttrMapEnd], a
	ld hl, wcd4b
	res 0, [hl]
	ret
; 102298

Function102298: ; 102298
	ld a, e
	cp $02
	ret nz
	ld hl, wcd4b
	bit 6, [hl]
	jr z, .asm_1022b6
	ld hl, wcd4b
	bit 7, [hl]
	ld hl, wcd4b
	set 7, [hl]
	ret nz
	ld de, SFX_ELEVATOR_END
	call PlaySFX
	jr .asm_1022c1

.asm_1022b6
	ld hl, wcd4b
	bit 7, [hl]
	ld hl, wcd4b
	res 7, [hl]
	ret z

.asm_1022c1
	call Function10304f
	ld a, $01
	ld [AttrMapEnd], a
	ret
; 1022ca

Function1022ca: ; 1022ca
	ld a, 30
	ld [OverworldDelay], a
	ret
; 1022d0

Function1022d0: ; 1022d0
	callba Function10032e
	ld a, [wcd2b]
	and a
	jr nz, .asm_1022f3
	call Function102298
	ld a, [OverworldDelay]
	ld c, a
	ld a, 30
	sub c
	ld c, a
	ld b, $03
	callba AdvanceMobileInactivityTimerAndCheckExpired
	jr c, .asm_1022f3
	xor a
	ret

.asm_1022f3
	scf
	ret
; 1022f5

Jumptable_1022f5: ; 1022f5
	dw Function10234b ; 00
	dw Function102361 ; 01
	dw Function10236e ; 02
	dw Function102387 ; 03
	dw Function1023a1 ; 04
	dw Function1025c7 ; 05
	dw Function1025dc ; 06
	dw Function1024f6 ; 07
	dw Function10250c ; 08
	dw Function1024a8 ; 09
	dw Function102591 ; 0a
	dw Function1024a8 ; 0b
	dw Function1025b0 ; 0c
	dw Function1025bd ; 0d
	dw Function102814 ; 0e
	dw Function10283c ; 0f
	dw Function102862 ; 10
	dw Function10286f ; 11
	dw Function1024a8 ; 12
	dw Function1028a5 ; 13
	dw Function1028ab ; 14
	dw Function1023b5 ; 15
	dw Function1023c6 ; 16
	dw Function1024af ; 17
	dw Function102416 ; 18
	dw Function102423 ; 19
	dw Function10244b ; 1a
	dw Function1024af ; 1b
	dw Function10246a ; 1c
	dw Function102652 ; 1d
	dw Function10266b ; 1e
	dw Function1025e9 ; 1f
	dw Function1025ff ; 20
	dw Function102738 ; 21
	dw Function102754 ; 22
	dw Function1026b7 ; 23
	dw Function1026c8 ; 24
	dw Function1028bf ; 25
	dw Function1028c6 ; 26
	dw Function1028d3 ; 27
	dw Function1028da ; 28
	dw Function1024a8 ; 29
	dw Function10248d ; 2a
; 10234b

Function10234b: ; 10234b
	call Function102d9a
	call Function102dd3
	call Function102dec
	ld hl, wcd4b
	set 1, [hl]
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 102361

Function102361: ; 102361
	ld a, $cc
	call Function1028e8
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 10236e

Function10236e: ; 10236e
	call Function1028fc
	ret nc
	ld a, [wcd51]
	cp $cc
	jr z, .asm_10237f
	ld a, $f2
	ld [wcd2b], a
	ret

.asm_10237f
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 102387

Function102387: ; 102387
	ld hl, wcd4b
	set 6, [hl]
	xor a
	ld [wdc5f], a
	ld de, MUSIC_ROUTE_30
	call PlayMusic
	call Function102d9a
	call Function102dd3
	ld a, $01
	ld [wMenuCursorY], a

Function1023a1: ; 1023a1
	call Function102283
	call Function102db7
	call Function102dec
	ld hl, wcd4b
	set 1, [hl]
	ld a, $1d
	ld [wcd49], a
	ret
; 1023b5

Function1023b5: ; 1023b5
	call Function10228e
	call Function102a3b
	call Function102b12
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 1023c6

Function1023c6: ; 1023c6
	call Function102c48
	call Function102c87
	ld a, [wcd4c]
	dec a
	ld [CurPartyMon], a
	xor a
	ld [wd10b], a
	callba RemoveMonFromPartyOrBox
	ld hl, PartyCount
	inc [hl]
	ld a, [hli]
	ld c, a
	ld b, 0
	add hl, bc
	ld [hl], $ff
	ld a, [PartyCount]
	ld [wcd4c], a
	call Function102c07
	call Function102d48
	call Function102b32
	call Function102f50
	ld hl, wcd4b
	set 1, [hl]
	ld a, $14
	ld [wcd4e], a
	ld a, 0
	ld [wcd4f], a
	ld a, 0
	ld [wcd4a], a
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 102416

Function102416: ; 102416
	ld a, $aa
	call Function1028e8
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 102423

Function102423: ; 102423
	call Function102921
	ret nc
	callba SaveAfterLinkTrade
	callba TrainerRankings_Trades
	callba BackupMobileEventIndex
	ld hl, wcd4b
	set 1, [hl]
	ld a, 0
	ld [wcd4a], a
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 10244b

Function10244b: ; 10244b
	call Function102f32
	ld hl, wcd4b
	set 1, [hl]
	ld a, $19
	ld [wcd4e], a
	ld a, 0
	ld [wcd4f], a
	ld a, 0
	ld [wcd4a], a
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 10246a

Function10246a: ; 10246a
	call Function102d9a
	ld hl, wcd29
	set 3, [hl]
	call Function102e07
	ld hl, wcd4b
	set 1, [hl]
	ld a, $2a
	ld [wcd49], a
	ret
; 102480

Function102480: ; 102480
	ld c, $32
	call DelayFrames
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 10248d

Function10248d: ; 10248d
	ld a, [wcd49]
	set 7, a
	ld [wcd49], a
	ret
; 102496

Function102496: ; 102496
	ld hl, wcd4e
	dec [hl]
	ret nz
	ld a, 0
	ld [wcd4a], a
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 1024a8

Function1024a8: ; 1024a8
	callba Function1009f3
	ret c

Function1024af: ; 1024af
	call GetJoypad
	ld a, [wcd4a]
	ld hl, Jumptable_1024ba
	rst JumpTable
	ret
; 1024ba

Jumptable_1024ba: ; 1024ba
	dw Function1024c0
	dw Function1024cb
	dw Function1024de
; 1024c0

Function1024c0: ; 1024c0
	ld hl, wcd4e
	inc [hl]
	ld a, [wcd4a]
	inc a
	ld [wcd4a], a

Function1024cb: ; 1024cb
	ld hl, wcd4e
	dec [hl]
	ret nz
	ld a, [wcd4f]
	inc a
	ld [wcd4e], a
	ld a, [wcd4a]
	inc a
	ld [wcd4a], a

Function1024de: ; 1024de
	ld hl, wcd4e
	dec [hl]
	jr z, .asm_1024e9
	ld a, [hJoyPressed]
	and A_BUTTON | B_BUTTON
	ret z

.asm_1024e9
	ld a, 0
	ld [wcd4a], a
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 1024f6

Function1024f6: ; 1024f6
	call PlaceHollowCursor
	ld hl, wcd4b
	set 1, [hl]
	ld a, [wcd4c]
	call Function1028e8
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 10250c

Function10250c: ; 10250c
	call Function1028fc
	ret nc
	ld a, [wcd51]
	cp $0f
	jr z, .asm_10254b
	and a
	jr z, .asm_102572
	cp $aa
	jr z, .asm_102572
	cp $07
	jr nc, .asm_102572
	ld [wcd4d], a
	dec a
	ld [wd003], a
	ld a, [wcd4c]
	dec a
	ld [wd002], a
	call Function102b9c
	call Function102bdc
	jr c, .asm_10256d
	callba Functionfb5dd
	jr c, .asm_102568
	ld hl, wcd4b
	set 1, [hl]
	ld a, $0e
	ld [wcd49], a
	ret

.asm_10254b
	call Function103021
	ld hl, wcd4b
	set 1, [hl]
	ld a, 0
	ld [wcd4a], a
	ld a, $1e
	ld [wcd4e], a
	ld a, $1e
	ld [wcd4f], a
	ld a, $29
	ld [wcd49], a
	ret

.asm_102568
	call Function102ff5
	jr .asm_102577

.asm_10256d
	call Function102f85
	jr .asm_102577

.asm_102572
	call Function102fce
	jr .asm_102577

.asm_102577
	ld hl, wcd4b
	set 1, [hl]
	ld a, 0
	ld [wcd4a], a
	ld a, $1e
	ld [wcd4e], a
	ld a, $3c
	ld [wcd4f], a
	ld a, $09
	ld [wcd49], a
	ret
; 102591

Function102591: ; 102591
	call Function102ee7
	ld hl, wcd4b
	set 1, [hl]
	ld a, 0
	ld [wcd4a], a
	ld a, $1e
	ld [wcd4e], a
	ld a, $3c
	ld [wcd4f], a
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 1025b0

Function1025b0: ; 1025b0
	ld a, $09
	call Function1028e8
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 1025bd

Function1025bd: ; 1025bd
	call Function1028fc
	ret nc
	ld a, $04
	ld [wcd49], a
	ret
; 1025c7

Function1025c7: ; 1025c7
	call Function102f6d
	ld hl, wcd4b
	set 1, [hl]
	ld a, $0f
	call Function1028e8
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 1025dc

Function1025dc: ; 1025dc
	call Function1028fc
	ret nc
	ld a, [wcd49]
	set 7, a
	ld [wcd49], a
	ret
; 1025e9

Function1025e9: ; 1025e9
	nop
	ld hl, wcd4b
	set 6, [hl]
	call Function102b4e
	ld hl, wcd4b
	set 1, [hl]
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 1025ff

Function1025ff: ; 1025ff
	ld hl, wcd4b
	set 2, [hl]
	callba Function1009f3
	ret c
	callba MobileMenuJoypad
	ld a, [wMenuJoypadFilter]
	and c
	ret z
	bit A_BUTTON_F, c
	jr nz, .a_button
	bit D_UP_F, c
	jr nz, .d_up
	bit D_DOWN_F, c
	jr nz, .d_down
	ret

.a_button
	ld hl, wcd4b
	set 3, [hl]
	ld a, $27 ; Function1028d3
	ld [wcd49], a
	ret

.d_up
	ld a, [wMenuCursorY]
	ld b, a
	ld a, [OTPartyCount]
	cp b
	ret nz
	call HideCursor
	ld a, [PartyCount]
	ld [wMenuCursorY], a
	ld a, $1d ; Function102652
	ld [wcd49], a
	ret

.d_down
	ld a, [wMenuCursorY]
	cp $01
	ret nz
	ld a, $23 ; Function1026b7
	ld [wcd49], a
	ret
; 102652

Function102652: ; 102652
	nop
	ld hl, wcd4b
	set 6, [hl]
	nop
	call Function102b7b
	nop
	ld hl, wcd4b
	set 1, [hl]
	nop
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 10266b

Function10266b: ; 10266b
	ld hl, wcd4b
	set 2, [hl]
	callba Function1009f3
	ret c
	callba MobileMenuJoypad
	ld a, [wMenuJoypadFilter]
	and c
	ret z
	bit A_BUTTON_F, c
	jr nz, .a_button
	bit D_DOWN_F, c
	jr nz, .d_down
	bit D_UP_F, c
	jr nz, .d_up
	ret

.a_button
	ld hl, wcd4b
	set 3, [hl]
	ld a, $21 ; Function102738
	ld [wcd49], a
	ret

.d_down
	ld a, [wMenuCursorY]
	dec a
	ret nz
	call HideCursor
	ld a, $1f ; Function1025e9
	ld [wcd49], a
	ret

.d_up
	ld a, [wMenuCursorY]
	ld b, a
	ld a, [PartyCount]
	cp b
	ret nz
	ld a, $23 ; Function1026b7
	ld [wcd49], a
	ret
; 1026b7

Function1026b7: ; 1026b7
	ld hl, wcd4b
	set 6, [hl]
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ld a, 0
	ld [wcd4a], a

Function1026c8: ; 1026c8
	call GetJoypad
	callba Function1009f3
	ret c
	ld a, [wcd4a]
	ld hl, Jumptable_1026da
	rst JumpTable
	ret
; 1026da

Jumptable_1026da: ; 1026da
	dw Function1026de
	dw Function1026f3
; 1026de

Function1026de: ; 1026de
	call HideCursor
	hlcoord 9, 17
	ld [hl], $ed
	ld a, [wcd4a]
	inc a
	ld [wcd4a], a
	ld hl, wcd4b
	set 1, [hl]
	ret
; 1026f3

Function1026f3: ; 1026f3
	ld a, [hJoyPressed]
	bit A_BUTTON_F, a
	jr nz, .asm_102723
	bit D_UP_F, a
	jr nz, .asm_102712
	bit D_DOWN_F, a
	jr nz, .asm_102702
	ret

.asm_102702
	hlcoord 9, 17
	ld [hl], " "
	ld a, $01
	ld [wMenuCursorY], a
	ld a, $1d ; Function102652
	ld [wcd49], a
	ret

.asm_102712
	hlcoord 9, 17
	ld [hl], " "
	ld a, [OTPartyCount]
	ld [wMenuCursorY], a
	ld a, $1f ; Function1025e9
	ld [wcd49], a
	ret

.asm_102723
	hlcoord 9, 17
	ld [hl], "▷"
	ld hl, wcd4b
	set 3, [hl]
	ld hl, wcd4b
	set 2, [hl]
	ld a, $5 ; Function1025c7
	ld [wcd49], a
	ret
; 102738

Function102738: ; 102738
	ld hl, wcd4b
	set 6, [hl]
	call PlaceHollowCursor
	call Function1027eb
	ld hl, wcd4b
	set 1, [hl]
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ld a, 0
	ld [wcd4a], a

Function102754: ; 102754
	call GetJoypad
	callba Function1009f3
	ret c
	ld a, [wcd4a]
	ld hl, Jumptable_102766
	rst JumpTable
	ret
; 102766

Jumptable_102766: ; 102766
	dw Function102770
	dw Function102775
	dw Function10278c
	dw Function1027a0
	dw Function1027b7
; 102770

Function102770: ; 102770
	ld a, $01
	ld [wcd4a], a

Function102775: ; 102775
	hlcoord 1, 16
	ld [hl], "▶"
	hlcoord 11, 16
	ld [hl], " "
	ld hl, wcd4b
	set 2, [hl]
	ld a, [wcd4a]
	inc a
	ld [wcd4a], a
	ret
; 10278c

Function10278c: ; 10278c
	ld a, [hJoyPressed]
	bit A_BUTTON_F, a
	jr nz, asm_1027c6
	bit B_BUTTON_F, a
	jr nz, asm_1027e2
	bit D_RIGHT_F, a
	jr nz, .asm_10279b
	ret

.asm_10279b
	ld a, $03
	ld [wcd4a], a
Function1027a0: ; 1027a0
	hlcoord 1, 16
	ld [hl], " "
	hlcoord 11, 16
	ld [hl], "▶"
	ld hl, wcd4b
	set 2, [hl]
	ld a, [wcd4a]
	inc a
	ld [wcd4a], a
	ret

Function1027b7: ; 1027b7
	ld a, [hJoyPressed]
	bit A_BUTTON_F, a
	jr nz, asm_1027d1
	bit B_BUTTON_F, a
	jr nz, asm_1027e2
	bit D_LEFT_F, a
	jr nz, Function102770
	ret

asm_1027c6:
	ld hl, wcd4b
	set 3, [hl]
	ld a, $25 ; Function1028bf
	ld [wcd49], a
	ret

asm_1027d1:
	ld hl, wcd4b
	set 3, [hl]
	ld a, [wMenuCursorY]
	ld [wcd4c], a
	ld a, $7 ; Function1024f6
	ld [wcd49], a
	ret

asm_1027e2:
	call Function102db7
	ld a, $1d ; Function102652
	ld [wcd49], a
	ret
; 1027eb

Function1027eb: ; 1027eb
	hlcoord 0, 14
	ld b, 2
	ld c, 18
	ld d, h
	ld e, l
	callba _LinkTextbox
	ld de, .Stats_Trade
	hlcoord 2, 16
	call PlaceString
	ret
; 102804

.Stats_Trade: ; 102804
	db "STATS     TRADE@"
; 102814

Function102814: ; 102814
	ld a, [wMenuCursorY]
	ld [wcd52], a
	ld a, [wcd4c]
	dec a
	ld [wd002], a
	ld a, [wcd4d]
	dec a
	ld [wd003], a
	call Function102ea8
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ld a, 0
	ld [wcd4a], a
	ld hl, wcd4b
	set 1, [hl]

Function10283c: ; 10283c
	ld hl, wcd4b
	set 2, [hl]
	call Function1029c3
	ret z
	jr c, .asm_102852
	ld a, $10 ; Function102862
	ld [wcd49], a
	ld hl, wcd4b
	set 1, [hl]
	ret

.asm_102852
	ld a, $14 ; Function1028ab
	ld [wcd49], a
	ld hl, wcd4b
	set 3, [hl]
	ld hl, wcd4b
	set 1, [hl]
	ret
; 102862

Function102862: ; 102862
	ld a, $08
	call Function1028e8
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 10286f

Function10286f: ; 10286f
	call Function1028fc
	ret nc
	ld a, [wcd52]
	ld [wMenuCursorY], a
	ld a, [wcd51]
	cp $08
	jr nz, .asm_102886
	ld a, $15 ; Function1023b5
	ld [wcd49], a
	ret

.asm_102886
	call Function102ee7
	ld hl, wcd4b
	set 1, [hl]
	ld a, $1e
	ld [wcd4e], a
	ld a, $3c
	ld [wcd4f], a
	ld a, 0
	ld [wcd4a], a
	ld a, [wcd49]
	inc a
	ld [wcd49], a
	ret
; 1028a5

Function1028a5: ; 1028a5
	ld a, $4 ; Function1023a1
	ld [wcd49], a
	ret
; 1028ab

Function1028ab: ; 1028ab
	ld a, [wcd52]
	ld [wMenuCursorY], a
	call Function102f15
	ld hl, wcd4b
	set 1, [hl]
	ld a, $c ; Function1025b0
	ld [wcd49], a
	ret
; 1028bf

Function1028bf: ; 1028bf
	ld a, [wcd49]
	inc a
	ld [wcd49], a

Function1028c6: ; 1028c6
	xor a
	ld [MonType], a
	call Function102bac
	ld a, $1d ; Function102652
	ld [wcd49], a
	ret
; 1028d3

Function1028d3: ; 1028d3
	ld a, [wcd49]
	inc a
	ld [wcd49], a

Function1028da: ; 1028da
	ld a, OTPARTYMON
	ld [MonType], a
	call Function102bac
	ld a, $1f ; Function1025e9
	ld [wcd49], a
	ret
; 1028e8

Function1028e8: ; 1028e8
	ld hl, wcd4b
	res 6, [hl]
	ld [wcd50], a
	callba StartMobileInactivityTimer
	ld a, 0
	ld [wcd4a], a
	ret
; 1028fc

Function1028fc: ; 1028fc
	call GetJoypad
	callba Function1009f3
	jr nc, .asm_102909
	and a
	ret

.asm_102909
	ld a, [wcd4a]
	ld hl, Jumptable_102917
	rst JumpTable
	ret nc
	ld a, 0
	ld [wcd4a], a
	ret
; 102917

Jumptable_102917: ; 102917
	dw Function102933
	dw Function10294f
	dw Function10295d
	dw Function10296e
	dw Function102996
; 102921

Function102921: ; 102921
	ld a, [wcd4a]
	ld hl, Jumptable_10292f
	rst JumpTable
	ret nc
	ld a, 0
	ld [wcd4a], a
	ret
; 10292f

Jumptable_10292f: ; 10292f
	dw Function10295d
	dw Function102984
; 102933

Function102933: ; 102933
	ld hl, MenuDataHeader_1029bb
	call LoadMenuDataHeader
	call Function102e07
	ld a, $32
	ld [TextDelayFrames], a
	ld hl, wcd4b
	set 1, [hl]
	ld a, [wcd4a]
	inc a
	ld [wcd4a], a
	and a
	ret
; 10294f

Function10294f: ; 10294f
	ld a, [TextDelayFrames]
	and a
	ret nz
	ld a, [wcd4a]
	inc a
	ld [wcd4a], a
	and a
	ret
; 10295d

Function10295d: ; 10295d
	call Function10299e
	ld a, 0
	ld [wcd27], a
	ld a, [wcd4a]
	inc a
	ld [wcd4a], a
	and a
	ret
; 10296e

Function10296e: ; 10296e
	callba Function100382
	and a
	ld a, [wcd27]
	bit 7, a
	ret z
	ld a, [wcd4a]
	inc a
	ld [wcd4a], a
	and a
	ret
; 102984

Function102984: ; 102984
	callba Function100382
	and a
	ld a, [wcd27]
	bit 7, a
	ret z
	call Function1029af
	scf
	ret
; 102996

Function102996: ; 102996
	call Function1029af
	call ExitMenu
	scf
	ret
; 10299e

Function10299e: ; 10299e
	ld a, $01
	ld [wccb4], a
	ld a, [wcd50]
	ld [wccb5], a
	ld a, $aa
	ld [wcd51], a
	ret
; 1029af

Function1029af: ; 1029af
	ld hl, wcd4b
	res 7, [hl]
	ld a, [wcc61]
	ld [wcd51], a
	ret
; 1029bb

MenuDataHeader_1029bb: ; 1029bb
	db $40 ; flags
	db 10, 3 ; start coords
	db 12, 15 ; end coords
	dw NULL
	db 1 ; default option
; 1029c3

Function1029c3: ; 1029c3
	ld a, [wcd4a]
	ld hl, Jumptable_1029cb
	rst JumpTable
	ret
; 1029cb

Jumptable_1029cb: ; 1029cb
	dw Function1029cf
	dw Function1029fe
; 1029cf

Function1029cf: ; 1029cf
	call LoadStandardMenuDataHeader
	hlcoord 10, 7
	ld b, 3
	ld c, 8
	ld d, h
	ld e, l
	callba _LinkTextbox
	ld de, String_102a26
	hlcoord 12, 8
	call PlaceString
	ld hl, wcd4b
	set 1, [hl]
	ld de, MenuData3_102a33
	call SetMenuAttributes
	ld a, [wcd4a]
	inc a
	ld [wcd4a], a
	xor a
	ret
; 1029fe

Function1029fe: ; 1029fe
	callba Function1009f3
	ret c
	callba MobileMenuJoypad
	ld a, c
	ld hl, wMenuJoypadFilter
	and [hl]
	ret z
	push af
	call ExitMenu
	pop af
	ld a, [wMenuCursorY]
	cp $01
	jr nz, .asm_102a21
	ld a, $01
	and a
	ret

.asm_102a21
	ld a, $01
	and a
	scf
	ret
; 102a26

String_102a26: ; 102a26
	db   "TRADE"
	next "CANCEL"
	db   "@"
; 102a33

MenuData3_102a33:
	db 8, 11
	db 2,  1
	db $80, $00
	dn 2, 0
	db A_BUTTON

Function102a3b: ; 102a3b
	ld a, [wcd30]
	ld [wc74e], a
	ld hl, PlayerName
	ld de, wPlayerTrademonSenderName
	ld bc, NAME_LENGTH
	call CopyBytes
	ld a, [wcd4c]
	dec a
	ld c, a
	ld b, 0
	ld hl, PartySpecies
	add hl, bc
	ld a, [hl]
	ld [wPlayerTrademonSpecies], a
	ld a, [wcd4c]
	dec a
	ld hl, PartyMonOT
	call SkipNames
	ld de, wPlayerTrademonOTName
	ld bc, NAME_LENGTH
	call CopyBytes
	ld a, [wcd4c]
	dec a
	ld hl, PartyMon1ID
	call GetPartyLocation
	ld a, [hli]
	ld [wPlayerTrademonID], a
	ld a, [hl]
	ld [wPlayerTrademonID + 1], a
	ld a, [wcd4c]
	dec a
	ld hl, PartyMon1DVs
	call GetPartyLocation
	ld a, [hli]
	ld [wPlayerTrademonDVs], a
	ld a, [hl]
	ld [wPlayerTrademonDVs + 1], a
	ld a, [wcd4c]
	dec a
	ld hl, PartyMon1Species
	call GetPartyLocation
	ld b, h
	ld c, l
	callba GetCaughtGender
	ld a, c
	ld [wPlayerTrademonCaughtData], a
	ld hl, OTPlayerName
	ld de, wOTTrademonSenderName
	ld bc, NAME_LENGTH
	call CopyBytes

	ld a, [wcd4d]
	dec a
	ld c, a
	ld b, 0
	ld hl, OTPartySpecies
	add hl, bc
	ld a, [hl]
	ld [wOTTrademonSpecies], a
	ld a, [wcd4d]
	dec a
	ld hl, OTPartyMonOT
	call SkipNames
	ld de, wOTTrademonOTName
	ld bc, NAME_LENGTH
	call CopyBytes
	ld a, [wcd4d]
	dec a
	ld hl, OTPartyMon1ID
	call GetPartyLocation
	ld a, [hli]
	ld [wOTTrademonID], a
	ld a, [hl]
	ld [wOTTrademonID + 1], a
	ld a, [wcd4d]
	dec a
	ld hl, OTPartyMon1DVs
	call GetPartyLocation
	ld a, [hli]
	ld [wOTTrademonDVs], a
	ld a, [hl]
	ld [wOTTrademonDVs + 1], a
	ld a, [wcd4d]
	dec a
	ld hl, OTPartyMon1Species
	call GetPartyLocation
	ld b, h
	ld c, l
	callba GetCaughtGender
	ld a, c
	ld [wOTTrademonCaughtData], a
	ret
; 102b12

Function102b12: ; 102b12
	ld c, 100
	call DelayFrames
	call Function102d9a
	call LoadFontsBattleExtra
	ld a, [wcd2f]
	and a
	jr nz, .asm_102b2b
	callba Function108026
	jr .asm_102b31

.asm_102b2b
	callba Function10802a

.asm_102b31
	ret
; 102b32

Function102b32: ; 102b32
	ld a, [wcd4c]
	dec a
	ld [CurPartyMon], a
	ld a, $01
	ld [wForceEvolution], a
	callba EvolvePokemon
	call Function102d9a
	call Function102dd3
	call Function102dec
	ret
; 102b4e

Function102b4e: ; 102b4e
	ld a, OTPARTYMON
	ld [MonType], a
	ld a, [wMenuCursorY]
	push af
	ld de, Unknown_102b73
	call SetMenuAttributes
	pop af
	ld [wMenuCursorY], a
	ld a, [OTPartyCount]
	ld [w2DMenuNumRows], a
	ret
; 102b68

Function102b68: ; 102b68 ; unreferenced
	xor a
	ld hl, wWindowStackPointer
	ld bc, $10
	call ByteFill
	ret
; 102b73

Unknown_102b73:
	db 9, 6
	db 255, 1
	db $a0, $00
	dn 1, 0
	db D_UP | D_DOWN | A_BUTTON

Function102b7b: ; 102b7b
	xor a
	ld [MonType], a
	ld a, [wMenuCursorY]
	push af
	ld de, Unknown_102b94
	call SetMenuAttributes
	pop af
	ld [wMenuCursorY], a
	ld a, [PartyCount]
	ld [w2DMenuNumRows], a
	ret
; 102b94

Unknown_102b94:
	db 1, 6
	db 255, 1
	db $a0, $00
	dn 1, 0
	db D_UP | D_DOWN | A_BUTTON

Function102b9c: ; 102b9c
	ld a, [wcd4d]
	dec a
	hlcoord 6, 9
	ld bc, $14
	call AddNTimes
	ld [hl], $ec
	ret
; 102bac

Function102bac: ; 102bac
	ld a, [wMenuCursorY]
	dec a
	ld [CurPartyMon], a
	call LowVolume
	call ClearSprites
	callba _MobileStatsScreenInit
	ld a, [CurPartyMon]
	inc a
	ld [wMenuCursorY], a
	call Function102d9a
	call ClearPalettes
	call DelayFrame
	call MaxVolume
	call Function102dd3
	call Function102dec
	call Function102db7
	ret
; 102bdc

Function102bdc: ; 102bdc
	ld a, [wcd4d]
	dec a
	ld hl, OTPartyMon1Species
	call GetPartyLocation
	push hl
	ld a, [wcd4d]
	ld c, a
	ld b, 0
	ld hl, OTPartyCount
	add hl, bc
	ld a, [hl]
	pop hl
	cp EGG
	jr z, .asm_102bfa
	cp [hl]
	jr nz, .asm_102c05

.asm_102bfa
	ld bc, MON_LEVEL
	add hl, bc
	ld a, [hl]
	cp MAX_LEVEL + 1
	jr nc, .asm_102c05
	and a
	ret

.asm_102c05
	scf
	ret
; 102c07

Function102c07: ; 102c07
	call Function102c14
	call Function102c3b
	call Function102c21
	call Function102c2e
	ret
; 102c14

Function102c14: ; 102c14
	ld hl, PartySpecies
	ld de, OTPartySpecies
	ld bc, 1
	call Function102c71
	ret
; 102c21

Function102c21: ; 102c21
	ld hl, PartyMonNicknames
	ld de, OTPartyMonNicknames
	ld bc, 11
	call Function102c71
	ret
; 102c2e

Function102c2e: ; 102c2e
	ld hl, PartyMonOT
	ld de, OTPartyMonOT
	ld bc, 11
	call Function102c71
	ret
; 102c3b

Function102c3b: ; 102c3b
	ld hl, PartyMon1
	ld de, OTPartyMon1
	ld bc, $30
	call Function102c71
	ret
; 102c48

Function102c48: ; 102c48
	callba Function10165a
	ld a, 0
	call GetSRAMBank
	ld hl, $a600
	ld de, wc608
	ld bc, $2f
	call Function102c71
	call CloseSRAM
	ld hl, wc608
	ld de, w5_da00
	ld bc, $1e0
	ld a, $05
	call FarCopyWRAM
	ret
; 102c71

Function102c71: ; 102c71
	ld a, [wcd4c]
	dec a
	call AddNTimes
	push hl
	ld h, d
	ld l, e
	ld a, [wcd4d]
	dec a
	call AddNTimes
	pop de
	call SwapBytes
	ret
; 102c87

Function102c87: ; 102c87
	ld a, [wJumptableIndex]
	push af
	ld a, [wcf64]
	push af
	ld a, [wcd4c]
	ld [wJumptableIndex], a
	ld a, [PartyCount]
	ld [wcf64], a
	ld a, 0
	ld hl, $a600
	ld de, wc608
	ld bc, $11a
	call Function102d3e
	call Function102cee
	ld a, 0
	ld hl, wc608
	ld de, $a600
	ld bc, $11a
	call Function102d3e
	ld a, [wcd4d]
	ld [wJumptableIndex], a
	ld a, [OTPartyCount]
	ld [wcf64], a
	ld a, $05
	ld hl, w5_da00
	ld de, wc608
	ld bc, $11a
	call FarCopyWRAM
	call Function102cee
	ld a, $05
	ld hl, wc608
	ld de, w5_da00
	ld bc, $11a
	call FarCopyWRAM
	pop af
	ld [wcf64], a
	pop af
	ld [wJumptableIndex], a
	ret
; 102cee

Function102cee: ; 102cee
	ld a, [wJumptableIndex]
	dec a
	call Function102d34
	ld de, wd002
	ld bc, $2f
	call CopyBytes
	ld a, [wJumptableIndex]
	ld c, a
	ld a, $06
	sub c
	ret z
	ld bc, $2f
	ld hl, 0
	call AddNTimes
	push hl
	ld a, [wJumptableIndex]
	dec a
	call Function102d34
	ld d, h
	ld e, l
	ld hl, $2f
	add hl, de
	pop bc
	call CopyBytes
	ld a, [wcf64]
	dec a
	call Function102d34
	ld d, h
	ld e, l
	ld hl, wd002
	ld bc, $2f
	call CopyBytes
	ret
; 102d34

Function102d34: ; 102d34
	ld hl, wc608
	ld bc, $2f
	call AddNTimes
	ret
; 102d3e

Function102d3e: ; 102d3e
	call GetSRAMBank
	call CopyBytes
	call CloseSRAM
	ret
; 102d48

Function102d48: ; 102d48
	ld a, [wcd4c]
	ld e, a
	ld d, 0
	ld hl, PartyCount
	add hl, de
	ld a, [hl]
	ld [wd265], a
	cp EGG
	jr z, .asm_102d6d
	dec a
	call SetSeenAndCaughtMon
	ld a, [wcd4c]
	dec a
	ld bc, PARTYMON_STRUCT_LENGTH
	ld hl, PartyMon1Happiness
	call AddNTimes
	ld [hl], BASE_HAPPINESS

.asm_102d6d
	ld a, [wd265]
	cp UNOWN
	jr nz, .asm_102d98
	ld a, [wcd4c]
	dec a
	ld bc, PARTYMON_STRUCT_LENGTH
	ld hl, PartyMon1DVs
	call AddNTimes
	predef GetUnownLetter
	callba UpdateUnownDex
	ld a, [wFirstUnownSeen]
	and a
	jr nz, .asm_102d98
	ld a, [UnownLetter]
	ld [wFirstUnownSeen], a

.asm_102d98
	and a
	ret
; 102d9a

Function102d9a: ; 102d9a
	ld a, " "
	hlcoord 0, 0
	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
	call ByteFill
	ld a, $07
	hlcoord 0, 0, AttrMap
	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
	call ByteFill
	callba HDMATransferAttrMapAndTileMapToWRAMBank3
	ret
; 102db7

Function102db7: ; 102db7
	call Function102e4f
	call Function102e3e
	ld hl, wcd4b
	set 1, [hl]
	ret
; 102dc3

Function102dc3: ; 102dc3
	hlcoord 0, 12
	ld b,  4
	ld c, 18
	ld d, h
	ld e, l
	callba _LinkTextbox
	ret
; 102dd3

Function102dd3: ; 102dd3
	call DisableLCD
	ld de, GFX_1032a2
	ld hl, VTiles0
	lb bc, BANK(GFX_1032a2), 4
	call Get2bpp
	callba __LoadTradeScreenBorder
	call EnableLCD
	ret
; 102dec

Function102dec: ; 102dec
	ld hl, Palettes_1032e2
	ld de, UnknOBPals
	ld bc, 4 palettes
	ld a, $05
	call FarCopyWRAM
	callba Function49742
	call SetPalettes
	call DelayFrame
	ret
; 102e07

Function102e07: ; 102e07
	hlcoord 3, 10
	ld b,  1
	ld c, 11
	ld a, [wBattleMode]
	and a
	jr z, .link_battle
	call TextBox
	jr .okay

.link_battle
; this is idiotic
	hlcoord 3, 10
	ld b,  1
	ld c, 11
	ld d, h
	ld e, l
	callba _LinkTextbox

.okay
	ld de, .waiting
	hlcoord 4, 11
	call PlaceString
	ret
; 102e32

.waiting ; 102e32
	db "Waiting...!@"
; 102e3e

Function102e3e: ; 102e3e
	ld de, .CANCEL
	hlcoord 10, 17
	call PlaceString
	ret
; 102e48

.CANCEL: ; 102e48
	db "CANCEL@"
; 102e4f

Function102e4f: ; 102e4f
	callba Function16d42e
	callba _InitMG_Mobile_LinkTradePalMap
	ld de, PlayerName
	hlcoord 4, 0
	call PlaceString
	ld a, $14
	ld [bc], a
	ld de, OTPlayerName
	hlcoord 4, 8
	call PlaceString
	ld a, $14
	ld [bc], a
	hlcoord 7, 1
	ld de, PartySpecies
	call .PlaceSpeciesNames
	hlcoord 7, 9
	ld de, OTPartySpecies
	call .PlaceSpeciesNames
	ret
; 102e86

.PlaceSpeciesNames: ; 102e86
	ld c, 0
.count_loop
	ld a, [de]
	cp $ff
	ret z
	ld [wd265], a
	push bc
	push hl
	push de
	push hl
	ld a, c
	ld [hDividend], a
	call GetPokemonName
	pop hl
	call PlaceString
	pop de
	inc de
	pop hl
	ld bc, SCREEN_WIDTH
	add hl, bc
	pop bc
	inc c
	jr .count_loop
; 102ea8

Function102ea8: ; 102ea8
	call Function102dc3
	ld a, [wcd4c]
	dec a
	ld c, a
	ld b, 0
	ld hl, PartySpecies
	add hl, bc
	ld a, [hl]
	ld [wd265], a
	call GetPokemonName
	ld hl, StringBuffer1
	ld de, StringBuffer2
	ld bc, 11
	call CopyBytes
	ld a, [wcd4d]
	dec a
	ld c, a
	ld b, 0
	ld hl, OTPartySpecies
	add hl, bc
	ld a, [hl]
	ld [wd265], a
	call GetPokemonName
	ld hl, UnknownText_0x102ee2
	call PrintTextBoxText
	ret
; 102ee2

UnknownText_0x102ee2: ; 102ee2
	text_jump UnknownText_0x1bd286
	db "@"

Function102ee7: ; 102ee7
	call Function102dc3
	ld de, String_102ef4
	hlcoord 1, 14
	call PlaceString
	ret
; 102ef4

String_102ef4: ; 102ef4
	db   "Too bad! The trade"
	next "was canceled!"
	db   "@"
; 102f15

Function102f15: ; 102f15
	call Function102dc3
	ld de, .TooBadTheTradeWasCanceled
	hlcoord 1, 14
	call PlaceString
	ret
; 102f22

.TooBadTheTradeWasCanceled: ; 102f22
	db "こうかんを キャンセルしました@"
; 102f32

Function102f32: ; 102f32
	call Function102dc3
	ld de, .TradeCompleted
	hlcoord 1, 14
	call PlaceString
	ret
; 102f3f

.TradeCompleted: ; 102f3f
	db "Trade completed!@"
; 102f50

Function102f50: ; 102f50
	call Function102dc3
	ld de, .PleaseWait
	hlcoord 1, 14
	call PlaceString
	ret
; 102f5d

.PleaseWait: ; 102f5d
	db "しょうしょう おまち ください@"
; 102f6d

Function102f6d: ; 102f6d
	call Function102dc3
	ld de, .Finished
	hlcoord 1, 14
	call PlaceString
	ret
; 102f7a

.Finished: ; 102f7a
	db "しゅうりょう します@"
; 102f85

Function102f85: ; 102f85
	ld a, [wd003]
	ld c, a
	ld b, 0
	ld hl, OTPartySpecies
	add hl, bc
	ld a, [hl]
	ld [wd265], a
	call GetPokemonName
	call Function102dc3
	ld de, String_102fb2
	hlcoord 1, 14
	call PlaceString
	ld de, StringBuffer1
	hlcoord 13, 14
	call PlaceString
	ld de, String_102fcc
	call PlaceString
	ret
; 102fb2

String_102fb2: ; 102fb2
	db   "あいてがわ<PKMN>えらんだ "
	next "いじょう<PKMN>あるようです!!"
	db   "@"
; 102fcc

String_102fcc: ; 102fcc
	db "に@"
; 102fce

Function102fce: ; 102fce
	call Function102dc3
	ld de, String_102fdb
	hlcoord 1, 14
	call PlaceString
	ret
; 102fdb

String_102fdb: ; 102fdb
	db   "あいてがわ%せんたくに"
	next "いじょう<PKMN>あるようです!!"
	done
; 102ff5

Function102ff5: ; 102ff5
	call Function102dc3
	ld de, String_103002
	hlcoord 1, 14
	call PlaceString
	ret
; 103002

String_103002: ; 103002
	db   "その#を こうかんすると"
	next "せんとう できなく なっちゃうよ!"
	db   "@"
; 103021

Function103021: ; 103021
	call Function102dc3
	ld de, String_10302e
	hlcoord 1, 14
	call PlaceString
	ret
; 10302e

String_10302e: ; 10302e
	db   "あいてが ちゅうしを えらんだので"
	next "こうかんを ちゅうし します"
	db   "@"
; 10304f

Function10304f: ; 10304f
	xor a
	ld [AttrMapEnd], a
	ld [wcf42], a
	ld [wcf44], a
	ld [wcf45], a
	ret
; 10305d

Function10305d: ; 10305d
	nop
	ld a, [AttrMapEnd]
	and a
	ret z
	call Function10307f
	ret c
	call Function103094
	call Function10306e
	ret
; 10306e

Function10306e: ; 10306e
	ld a, $01
	ld [hOAMUpdate], a
	call ClearSprites
	ld de, Sprites
	call Function1030cd
	xor a
	ld [hOAMUpdate], a
	ret
; 10307f

Function10307f: ; 10307f
	ld c, $02
	ld hl, wcd4b
	bit 7, [hl]
	jr z, .asm_10308a
	ld c, $01

.asm_10308a
	ld hl, wcf45
	inc [hl]
	ld a, [hl]
	cp c
	ret c
	xor a
	ld [hl], a
	ret
; 103094

Function103094: ; 103094
	ld hl, wcd4b
	bit 7, [hl]
	jr nz, .asm_1030c0
	ld a, [wcf42]
	bit 7, a
	jr nz, .asm_1030b2
	ld a, [wcf44]
	inc a
	ld [wcf44], a
	cp $2c
	ret nz
	ld hl, wcf42
	set 7, [hl]
	ret

.asm_1030b2
	ld a, [wcf44]
	dec a
	ld [wcf44], a
	ret nz
	ld hl, wcf42
	res 7, [hl]
	ret

.asm_1030c0
	ld hl, wcf44
	ld a, [hl]
	and a
	jr z, .asm_1030ca
	dec a
	ld [hl], a
	ret nz

.asm_1030ca
	ld [hl], $2c
	ret
; 1030cd

Function1030cd: ; 1030cd
	ld a, [wcf44]
	ld l, a
	ld h, 0
	add hl, hl
	add hl, hl
	add hl, hl
	ld bc, Unknown_103112
	add hl, bc
	ld b, $30
	ld c, $08
.asm_1030de
	push hl
	ld hl, wcd4b
	bit 7, [hl]
	pop hl
	ld a, 0
	jr z, .asm_1030eb
	ld a, $05
.asm_1030eb

	add [hl]
	inc hl
	push hl

	add a
	add a

	add Unknown_10327a % $100
	ld l, a
	ld a, Unknown_10327a / $100
	adc 0
	ld h, a

	ld a, b
	add [hl]
	inc hl
	ld [de], a
	inc de
	ld a, $0a
	add [hl]
	inc hl
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	pop hl
	ld a, b
	add $08
	ld b, a
	dec c
	jr nz, .asm_1030de
	ret
; 103112

Unknown_103112: ; 103112
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $01, $00, $00, $00, $00, $00, $00, $00
	db $02, $01, $00, $00, $00, $00, $00, $00
	db $03, $02, $01, $00, $00, $00, $00, $00
	db $04, $03, $02, $01, $00, $00, $00, $00
	db $04, $04, $03, $02, $01, $00, $00, $00
	db $04, $04, $04, $03, $02, $01, $00, $00
	db $04, $04, $04, $04, $03, $02, $01, $00
	db $04, $04, $04, $04, $04, $03, $02, $01
	db $04, $04, $04, $04, $04, $04, $03, $02
	db $04, $04, $04, $04, $04, $04, $04, $03
	db $04, $04, $04, $04, $04, $04, $04, $04
	db $04, $04, $04, $04, $04, $04, $04, $04
	db $04, $04, $04, $04, $04, $04, $04, $04
	db $04, $04, $04, $04, $04, $04, $04, $04
	db $04, $04, $04, $04, $04, $04, $04, $04
	db $04, $04, $04, $04, $04, $04, $04, $04
	db $04, $04, $04, $04, $04, $04, $04, $04
	db $04, $04, $04, $04, $04, $04, $04, $04
	db $03, $04, $04, $04, $04, $04, $04, $04
	db $02, $03, $04, $04, $04, $04, $04, $04
	db $01, $02, $03, $04, $04, $04, $04, $04
	db $00, $01, $02, $03, $04, $04, $04, $04
	db $00, $00, $01, $02, $03, $04, $04, $04
	db $00, $00, $00, $01, $02, $03, $04, $04
	db $00, $00, $00, $00, $01, $02, $03, $04
	db $00, $00, $00, $00, $00, $01, $02, $03
	db $00, $00, $00, $00, $00, $00, $01, $02
	db $00, $00, $00, $00, $00, $00, $00, $01
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
; 10327a

Unknown_10327a: ; 10327a
	db $00, $00, $00, $00
	db $00, $00, $01, $00
	db $00, $00, $02, $00
	db $00, $00, $03, $00
	db $00, $00, $01, $01
	db $00, $00, $00, $00
	db $00, $00, $01, $02
	db $00, $00, $02, $02
	db $00, $00, $03, $02
	db $00, $00, $01, $03

GFX_1032a2:
INCBIN "gfx/unknown/1032a2.2bpp"

Palettes_1032e2:
	RGB  0,  0,  0
	RGB 31, 31,  7
	RGB 20, 31,  6
	RGB 13, 20, 16

	RGB  0,  0,  0
	RGB  7, 11, 17
	RGB  0,  0,  0
	RGB  0,  0,  0

	RGB  0,  0,  0
	RGB 31, 24,  4
	RGB 25, 12,  0
	RGB 31,  7,  4

	RGB  0,  0,  0
	RGB 25,  0,  0
	RGB  0,  0,  0
	RGB  0,  0,  0

; 103302

Function103302: ; 103302
	call Function103309
	call Function103362
	ret
; 103309

Function103309: ; 103309
	xor a
	ld [hBGMapMode], a
	ld hl, Buffer1
	ld bc, 10
	xor a
	call ByteFill
	ld a, $04
	call GetSRAMBank
	ld a, [wdc41]
	ld [$a60c], a
	ld [Buffer1], a
	call CloseSRAM
	call Function1035c6
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld b, a
	ld a, [hli]
	ld [wd1ef], a
	ld a, [hli]
	ld [wd1ec], a
	ld a, [hli]
	ld [wd1ed], a
	ld h, d
	ld l, e
	call Function3eea
	ld hl, wd1ec
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [hl]
	ld [wd1ee], a
	call Function1034be
	call UpdateSprites
	callba HDMATransferAttrMapAndTileMapToWRAMBank3
	ld a, $01
	ld [wd1f0], a
	call Function10339a
	ret
; 103362

Function103362: ; 103362
.asm_103362
	ld a, [wd1f0]
	ld [wd1f1], a
	call Function1033af
	call Function10339a
	call Function10342c
	callba HDMATransferTileMapToWRAMBank3
	ld a, [Buffer2]
	bit 7, a
	jr z, .asm_103362
	ld hl, Buffer2
	bit 6, [hl]
	jr z, .asm_103398
	ld a, $04
	call GetSRAMBank
	ld a, [Buffer1]
	ld [$a60c], a
	ld [wdc41], a
	call CloseSRAM
	xor a
	ret

.asm_103398
	scf
	ret
; 10339a

Function10339a: ; 10339a
	ld a, [wd1f0]
	ld [wd1f2], a
	ld c, a
	ld b, 0
	ld hl, wd1ec
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, bc
	ld a, [hl]
	ld [wd1f3], a
	ret
; 1033af

Function1033af: ; 1033af
	call GetJoypad
	ld a, [hJoyPressed]
	bit D_LEFT_F, a
	jr nz, .left
	bit D_RIGHT_F, a
	jr nz, .right
	bit B_BUTTON_F, a
	jr nz, .b
	bit A_BUTTON_F, a
	jr nz, .a
	bit D_UP_F, a
	jr nz, .up
	bit D_DOWN_F, a
	jr nz, .down
	ret

.up
	ld a, [wd1f0]
	dec a
	ld [wd1f0], a
	cp 1
	ret nc
	ld a, [wd1ee]
	ld [wd1f0], a
	ret

.down
	ld a, [wd1f0]
	inc a
	ld [wd1f0], a
	ld c, a
	ld a, [wd1ee]
	cp c
	ret nc
	ld a, 1
	ld [wd1f0], a
	ret

.b
	call PlayClickSFX
	ld hl, Buffer2
	set 7, [hl]
	ret

.a
	ld a, [wd1f3]
	cp 3
	jr nz, .a_return
	ld de, SFX_TRANSACTION
	call PlaySFX
	ld hl, Buffer2
	set 7, [hl]
	ld hl, Buffer2
	set 6, [hl]
	ret

.left
.right
.a_return
	ld a, [wd1f3]
	cp 3
	ret z
	ld de, SFX_PUSH_BUTTON
	call PlaySFX
	ld bc, 8
	call Function10350f
	ld a, [Buffer1]
	xor e
	ld [Buffer1], a
	ret
; 10342c

Function10342c: ; 10342c
	ld a, [wd1f0]
	ld [wd1f2], a
	call Function103490
	call Function10343c
	call Function1034a7
	ret
; 10343c

Function10343c: ; 10343c
	ld a, [wd1f3]
	cp $02
	jr nz, .asm_103452
	ld bc, 1
	call Function1034f7
	ld c, $12
	ld b, $01
	call Function1034e0
	jr .asm_10345f

.asm_103452
	ld bc, $ffed
	call Function1034f7
	ld c, $12
	ld b, $02
	call Function1034e0

.asm_10345f
	ld bc, 0
	call Function10350f
	ld bc, 1
	call Function103487
	ld bc, 8
	call Function10350f
	ld a, [Buffer1]
	and e
	ld bc, 2
	jr z, .asm_10347d
	ld bc, 4

.asm_10347d
	call Function10350f
	ld bc, 11
	call Function103487
	ret
; 103487

Function103487: ; 103487
	push de
	call Function1034f7
	pop de
	call PlaceString
	ret
; 103490

Function103490: ; 103490
	hlcoord 0, 15
	ld c, $14
	ld b, $03
	call Function1034e0
	ld bc, 6
	call Function10350f
	hlcoord 1, 16
	call PlaceString
	ret
; 1034a7

Function1034a7: ; 1034a7
	ld a, [wd1f1]
	ld [wd1f2], a
	ld bc, 10
	call Function1034f7
	ld [hl], $7f
	ld bc, 10
	call Function1034f1
	ld [hl], $ed
	ret
; 1034be

Function1034be: ; 1034be
	ld a, $01
	ld [wd1f2], a
	ld hl, wd1ec
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [hli]
.asm_1034ca
	push af
	ld a, [hli]
	push hl
	ld [wd1f3], a
	call Function10343c
	ld hl, wd1f2
	inc [hl]
	pop hl
	pop af
	dec a
	jr nz, .asm_1034ca
	call Function103490
	ret
; 1034e0

Function1034e0: ; 1034e0
	push bc
	push hl
	call ClearBox
	pop hl
	ld bc, AttrMap - TileMap
	add hl, bc
	pop bc
	ld a, $06
	call FillBoxWithByte
	ret
; 1034f1

Function1034f1: ; 1034f1
	ld a, [wd1f0]
	ld [wd1f2], a

Function1034f7: ; 10134f7
	hlcoord 0, 0
	add hl, bc
	ld a, [wd1ef]
	ld bc, SCREEN_WIDTH
	call AddNTimes
	ld a, [wd1f2]
	dec a
	ld bc, 40
	call AddNTimes
	ret
; 10350f

Function10350f: ; 10350f
	ld a, [wd1f3]
	push bc
	ld hl, Unknown_103522
	ld bc, 9
	call AddNTimes
	pop bc
	add hl, bc
	ld a, [hli]
	ld d, [hl]
	ld e, a
	ret
; 103522

Unknown_103522: ; 103522
	dw String_103546
	dw String_103598
	dw String_1035a0
	dw String_10355f
	db $01
	dw String_10354f
	dw String_1035a8
	dw String_1035b1
	dw String_103571
	db $02
	dw String_103557
	dw String_1035ba
	dw String_1035bd
	dw String_103585
	db $04
	dw String_103545
	dw String_1035c1
	dw String_1035c1
	dw String_103545

String_103545: db "@"
String_103546: db "せんとう アニメ@"
String_10354f: db "でんわばんごう@"
String_103557: db "めいしこうかん@"
String_10355f: db "でんわを かけるひとが きめられる@"
String_103571: db "でんわばんごうの にゅうりょくのしかた@"
String_103585: db "あたらしいめいしが あれば こうかん@"
String_103598: db "とばして みる@"
String_1035a0: db "じっくり みる@"
String_1035a8: db "めいしからえらぶ@"
String_1035b1: db "すうじで いれる@"
String_1035ba: db "する@"
String_1035bd: db "しない@"
String_1035c1: db "けってい@"
; 1035c6

Function1035c6: ; 1035c6
	callba Function10138b
	ld b, 0
	ld hl, Unknown_1035d7
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret
; 1035d7

Unknown_1035d7: ; 1035d7
	dw Unknown_1035e7
	dw Unknown_1035f3
	dw Unknown_103608
	dw Unknown_103608
	dw Unknown_1035fe
	dw AskMobileOrCable
	dw AskMobileOrCable
	dw AskMobileOrCable

Unknown_1035e7: ; 1035e7
	dwcoord 0, 6
	db $12, $07, $07
	dw .this
.this
	db 4, 2, 1, 0, 3

Unknown_1035f3: ; 1035f3
	dwcoord 0, 7
	db $12, $06, $09
	dw .this
.this
	db 3, 2, 1, 3

Unknown_1035fe: ; 1035fe
	dwcoord 0, 9
	db $12, $04, $0b
	dw .this
.this
	db 2, 0, 3

Unknown_103608: ; 103608
	dwcoord 0, 9
	db $12, $04, $0b
	dw .this
.this
	db 2, 2, 3
; 103612

AskMobileOrCable: ; 103612
	ld hl, MenuDataHeader_103640
	call LoadMenuDataHeader
	ld a, [wMobileOrCable_LastSelection]
	and $0f
	jr z, .skip_load
	ld [wMenuCursorBuffer], a

.skip_load
	call VerticalMenu
	call CloseWindow
	jr c, .pressed_b
	ld a, [wMenuCursorY]
	ld [ScriptVar], a
	ld c, a
	ld a, [wMobileOrCable_LastSelection]
	and $f0
	or c
	ld [wMobileOrCable_LastSelection], a
	ret

.pressed_b
	xor a
	ld [ScriptVar], a
	ret
; 103640

MenuDataHeader_103640: ; 103640
	db $40 ; flags
	db  6, 13 ; start coords
	db 11, 19 ; end coords
	dw MenuData2_103648
	db 1 ; default option

MenuData2_103648: ; 103648
	db $80 ; flags
	db 2
	db "モバイル@"
	db "ケーブル@"
; 103654

Function103654: ; 103654
	callba Mobile_AlwaysReturnNotCarry
	bit 7, c
	jr nz, .asm_103666
	ld hl, wcd2a
	res 5, [hl]
	ld c, $02
	ret

.asm_103666
	ld hl, wcd2a
	set 5, [hl]
	ld c, $01
	ret
; 10366e

Mobile_SelectThreeMons: ; 10366e
	callba Mobile_AlwaysReturnNotCarry
	bit 7, c
	jr z, .asm_10369b
	ld hl, UnknownText_0x10375d
	call PrintText
	call YesNoBox
	jr c, .asm_103696
	callba CheckForMobileBattleRules
	jr nc, .asm_103690
	call JoyWaitAorB
	jr .asm_103696

.asm_103690
	ld a, $01
	ld [ScriptVar], a
	ret

.asm_103696
	xor a
	ld [ScriptVar], a
	ret

.asm_10369b
	ld hl, wMobileOrCable_LastSelection
	bit 7, [hl]
	set 7, [hl]
	jr nz, .asm_1036b5
	ld hl, UnknownText_0x103762
	call PrintText
	call YesNoBox
	jr c, .asm_1036b5
	call Function1036f9
	call JoyWaitAorB

.asm_1036b5
	call Function103700
	jr c, .asm_1036f4
	ld hl, MenuDataHeader_103747
	call LoadMenuDataHeader
	call VerticalMenu
	call ExitMenu
	jr c, .asm_1036f4
	ld a, [wMenuCursorY]
	cp $01
	jr z, .asm_1036d9
	cp $02
	jr z, .asm_1036f4
	cp $03
	jr z, .asm_1036ec
	jr .asm_1036b5

.asm_1036d9
	callba CheckForMobileBattleRules
	jr nc, .asm_1036e6
	call JoyWaitAorB
	jr .asm_1036f4

.asm_1036e6
	ld a, $01
	ld [ScriptVar], a
	ret

.asm_1036ec
	call Function1036f9
	call JoyWaitAorB
	jr .asm_1036b5

.asm_1036f4
	xor a
	ld [ScriptVar], a
	ret
; 1036f9

Function1036f9: ; 1036f9
	ld hl, UnknownText_0x103767
	call PrintText
	ret
; 103700

Function103700: ; 103700
	ld c, $0a
	ld hl, SwarmFlags
	bit 4, [hl]
	jr z, .asm_10370f
	callba Function1008a6

.asm_10370f
	ld a, c
	ld [StringBuffer2], a
	ld a, [StringBuffer2]
	cp $05
	jr nc, .asm_103724
	cp $02
	jr nc, .asm_10372c
	cp $01
	jr nc, .asm_103734
	jr .asm_10373c

.asm_103724
	ld hl, UnknownText_0x10376c
	call PrintText
	and a
	ret

.asm_10372c
	ld hl, UnknownText_0x103771
	call PrintText
	and a
	ret

.asm_103734
	ld hl, UnknownText_0x103776
	call PrintText
	and a
	ret

.asm_10373c
	ld hl, UnknownText_0x10377b
	call PrintText
	call JoyWaitAorB
	scf
	ret
; 103747

MenuDataHeader_103747: ; 103747
	db $40 ; flags
	db  5, 13 ; start coords
	db 11, 19 ; end coords
	dw MenuData2_10374f
	db 1 ; default option

MenuData2_10374f: ; 10374f
	db $c0 ; flags
	db 3
	db "はい@"
	db "やめる@"
	db "せつめい@"
; 10375d

UnknownText_0x10375d: ; 0x10375d
	text_jump UnknownText_0x1c422a
	db "@"
; 0x103762
UnknownText_0x103762: ; 0x103762
	text_jump UnknownText_0x1c4275
	db "@"
; 0x103767
UnknownText_0x103767: ; 0x103767
	text_jump UnknownText_0x1c4298
	db "@"
; 0x10376c
UnknownText_0x10376c: ; 0x10376c
	text_jump UnknownText_0x1c439c
	db "@"
; 0x103771
UnknownText_0x103771: ; 0x103771
	text_jump UnknownText_0x1c43dc
	db "@"
; 0x103776
UnknownText_0x103776: ; 0x103776
	text_jump UnknownText_0x1c4419
	db "@"
; 0x10377b
UnknownText_0x10377b: ; 0x10377b
	text_jump UnknownText_0x1c445a
	db "@"
; 0x103780

Function103780: ; 103780
	ld a, [wd265]
	push af
	call Function10378c
	pop af
	ld [wd265], a
	ret
; 10378c

Function10378c: ; 10378c
	ld c, 0
	ld hl, SwarmFlags
	bit 4, [hl]
	jr nz, .already_set
	ld c, $01
	ld hl, SwarmFlags
	set 4, [hl]

.already_set
	push bc
	callba Link_SaveGame
	pop bc
	jr c, .failed_to_save
	ld a, $01
	ld [ScriptVar], a
	ld a, c
	and a
	ret z
	callba Function1006fd
	ret

.failed_to_save
	xor a
	ld [ScriptVar], a
	ld a, c
	and a
	ret z
	ld hl, SwarmFlags
	res 4, [hl]
	ret
; 1037c2

Function1037c2: ; 1037c2
	call Function103823
	jr c, .nope
	ld a, [wdc5f]
	and a
	jr z, .nope
	ld hl, UnknownText_0x1037e6
	call PrintText
	call YesNoBox
	jr c, .nope
	ld a, $01
	ld [ScriptVar], a
	ret

.nope
	xor a
	ld [wdc5f], a
	ld [ScriptVar], a
	ret
; 1037e6

UnknownText_0x1037e6: ; 0x1037e6
	text_jump UnknownText_0x1c449c
	db "@"
; 0x1037eb

Function1037eb: ; 1037eb
	call Function103823
	jr nc, .asm_103807
	ld hl, UnknownText_0x103819
	call PrintText
	call JoyWaitAorB
	ld hl, UnknownText_0x10381e
	call PrintText
	call JoyWaitAorB
	xor a
	ld [ScriptVar], a
	ret

.asm_103807
	ld a, [wdc60]
	and a
	jr nz, .asm_103813
	ld a, $01
	ld [ScriptVar], a
	ret

.asm_103813
	ld a, $02
	ld [ScriptVar], a
	ret
; 103819

UnknownText_0x103819: ; 0x103819
	text_jump UnknownText_0x1c44c0
	db "@"
; 0x10381e

UnknownText_0x10381e: ; 0x10381e
	text_jump UnknownText_0x1c44e7
	db "@"
; 0x103823

Function103823: ; 103823
	callba Mobile_AlwaysReturnNotCarry
	bit 7, c
	jr nz, .asm_103838
	callba Function1008a6
	ld a, c
	cp $01
	jr c, .asm_10383a

.asm_103838
	xor a
	ret

.asm_10383a
	scf
	ret
; 10383c

Function10383c: ; 10383c
	ld a, $01
	ld [wdc60], a
	xor a
	ld hl, wPlayerMonSelection
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld hl, UnknownText_0x103876
	call PrintText
	call JoyWaitAorB
	callba Script_reloadmappart
	callba Function4a94e
	jr c, .asm_103870
	ld hl, wd002
	ld de, wPlayerMonSelection
	ld bc, 3
	call CopyBytes
	xor a
	ld [ScriptVar], a
	ret

.asm_103870
	ld a, $01
	ld [ScriptVar], a
	ret
; 103876

UnknownText_0x103876: ; 0x103876
	text_jump UnknownText_0x1c4508
	db "@"
; 0x10387b

Function10387b: ; 10387b
	callba Mobile_AlwaysReturnNotCarry
	bit 7, c
	ret nz
	callba Function1008a6
	ld a, c
	ld [StringBuffer2], a
	ld hl, UnknownText_0x103898
	call PrintText
	call JoyWaitAorB
	ret
; 103898

UnknownText_0x103898: ; 0x103898
	text_jump UnknownText_0x1c4525
	db "@"
; 0x10389d