shithub: pokecrystal

ref: acd92eee94f0c8a7e0757ce2a1f486f08a4a9ad7
dir: /event/battle_tower.asm/

View raw version
Function8b1e1: ; 8b1e1
	ld de, Unknown_8b1ed
	call Function8b25b
	ret z
	call Function8b231
	scf
	ret
; 8b1ed

Unknown_8b1ed: ; 8b1ed
	db 2
	dw Unknown_8b1f2
	dw Unknown_8b1f6

Unknown_8b1f2: ; 8b1f2
	dw Function8b2bb
	dw Function8b2c1
; 8b1f6

Unknown_8b1f6: ; 8b1f6
	dw UnknownText_0x8b1fc
	dw UnknownText_0x8b23d
	dw UnknownText_0x8b242
; 8b1fc

UnknownText_0x8b1fc: ; 0x8b1fc
	; Excuse me!
	text_jump UnknownText_0x1c5937
	db "@"
; 0x8b201

CheckForBattleTowerRules: ; 8b201
	ld hl, StringBuffer2
	ld [hl], "3"
	inc hl
	ld [hl], "@"
	ld de, CheckForBattleTowerRules_FunctionsText
	call Function8b25b
	ret z
	call Function8b231
	scf
	ret
; 8b215

CheckForBattleTowerRules_FunctionsText: ; 8b215
	db 4
	dw CheckForBattleTowerRules_Functions
	dw CheckForBattleTowerRules_Text

CheckForBattleTowerRules_Functions: ; 8b21a
	dw Function_PartyCountEq3
	dw Function_PartySpeciesAreUnique
	dw Function_PartyItemsAreUnique
	dw Function_HasPartyAnEgg
; 8b222

CheckForBattleTowerRules_Text: ; 8b222
	dw JumpText_ExcuseMeYoureNotReady
	dw JumpText_OnlyThreePkmnMayBeEntered
	dw JumpText_ThePkmnMustAllBeDifferentKinds
	dw JumpText_ThePkmnMustNotHoldTheSameItems
	dw JumpText_YouCantTakeAnEgg
; 8b22c

JumpText_ExcuseMeYoureNotReady: ; 0x8b22c
	; Excuse me. You're not ready.
	text_jump Text_ExcuseMeYoureNotReady
	db "@"
; 0x8b231

Function8b231: ; 8b231
	ld hl, UnknownText_0x8b238
	call PrintText
	ret
; 8b238

UnknownText_0x8b238: ; 0x8b238
	; Please return when you're ready.
	text_jump UnknownText_0x1c5962
	db "@"
; 0x8b23d

UnknownText_0x8b23d: ; 0x8b23d
	; You need at least three #MON.
	text_jump UnknownText_0x1c5983
	db "@"
; 0x8b242

UnknownText_0x8b242: ; 0x8b242
	; Sorry, an EGG doesn't qualify.
	text_jump UnknownText_0x1c59a3
	db "@"
; 0x8b247

JumpText_OnlyThreePkmnMayBeEntered: ; 0x8b247
	; Only three #MON may be entered.
	text_jump Text_OnlyThreePkmnMayBeEntered
	db "@"
; 0x8b24c

JumpText_ThePkmnMustAllBeDifferentKinds: ; 0x8b24c
	; The @  #MON must all be different kinds.
	text_jump Text_ThePkmnMustAllBeDifferentKinds
	db "@"
; 0x8b251

JumpText_ThePkmnMustNotHoldTheSameItems: ; 0x8b251
	; The @  #MON must not hold the same items.
	text_jump Text_ThePkmnMustNotHoldTheSameItems
	db "@"
; 0x8b256

JumpText_YouCantTakeAnEgg: ; 0x8b256
	; You can't take an EGG!
	text_jump Text_YouCantTakeAnEgg
	db "@"
; 0x8b25b

Function8b25b: ; 8b25b
	ld bc, 0
.asm_8b25e
	call Function8b26c
	call c, Function8b28e
	call Function8b276
	jr nz, .asm_8b25e
	ld a, b
	and a
	ret
; 8b26c

Function8b26c: ; 8b26c
	push de
	push bc
	call Function8b27a
	ld a, c
	rst JumpTable
	pop bc
	pop de
	ret
; 8b276

Function8b276: ; 8b276
	inc c
	ld a, [de]
	cp c
	ret
; 8b27a

Function8b27a: ; 8b27a
	inc de
	ld a, [de]
	ld l, a
	inc de
	ld a, [de]
	ld h, a
	ret
; 8b281

Function8b281: ; 8b281
rept 3
	inc de
endr
	ld a, [de]
	ld l, a
	inc de
	ld a, [de]
	ld h, a
	ret
; 8b28a

Function8b28a: ; 8b28a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret
; 8b28e

Function8b28e: ; 8b28e
	push de
	push bc
	ld a, b
	and a
	call z, Function8b29d
	pop bc
	call Function8b2a9
	ld b, $1
	pop de
	ret
; 8b29d

Function8b29d: ; 8b29d
	push de
	call Function8b281
	call Function8b28a
	call PrintText
	pop de
	ret
; 8b2a9

Function8b2a9: ; 8b2a9
	push bc
	call Function8b281
rept 2
	inc hl
endr
	ld b, $0
rept 2
	add hl, bc
endr
	call Function8b28a
	call PrintText
	pop bc
	ret
; 8b2bb

Function8b2bb: ; 8b2bb
	ld a, [PartyCount]
	cp 3
	ret
; 8b2c1

Function8b2c1: ; 8b2c1
	ld hl, PartyCount
	ld a, [hli]
	ld b, $0
	ld c, a
.asm_8b2c8
	ld a, [hli]
	cp EGG
	jr z, .asm_8b2ce
	inc b

.asm_8b2ce
	dec c
	jr nz, .asm_8b2c8
	ld a, [PartyCount]
	cp b
	ret z
	ld a, b
	cp 3
	ret
; 8b2da

Function_PartyCountEq3: ; 8b2da
	ld a, [PartyCount]
	cp 3
	ret z
	scf
	ret
; 8b2e2

Function_PartySpeciesAreUnique: ; 8b2e2
	ld hl, PartyMon1Species
	call VerifyUniqueness
	ret
; 8b2e9

VerifyUniqueness: ; 8b2e9
	ld de, PartyCount
	ld a, [de]
	inc de
	dec a
	jr z, .done
	ld b, a
.loop
	push hl
	push de
	ld c, b
	call .isegg
	jr z, .next
	ld a, [hl]
	and a
	jr z, .next
.loop2
	call .nextmon
	call .isegg
	jr z, .next2
	cp [hl]
	jr z, .gotcha

.next2
	dec c
	jr nz, .loop2

.next
	pop de
	pop hl
	call .nextmon
	dec b
	jr nz, .loop

.done
	and a
	ret

.gotcha
	pop de
	pop hl
	scf
	ret
; 8b31a

.nextmon: ; 8b31a
	push bc
	ld bc, PARTYMON_STRUCT_LENGTH
	add hl, bc
	inc de
	pop bc
	ret
; 8b322

.isegg: ; 8b322
	push bc
	ld b, a
	ld a, [de]
	cp EGG
	ld a, b
	pop bc
	ret
; 8b32a

Function_PartyItemsAreUnique: ; 8b32a
	ld hl, PartyMon1Item
	call VerifyUniqueness
	ret
; 8b331

Function_HasPartyAnEgg: ; 8b331
	ld hl, PartyCount
	ld a, [hli]
	ld c, a
.loop
	ld a, [hli]
	cp EGG
	jr z, .found
	dec c
	jr nz, .loop
	and a
	ret

.found
	scf
	ret
; 8b342