shithub: pokecrystal

Download patch

ref: 46fea9799482a7d767f0d59ff080b20f1b0445e6
parent: 09dfa9f09e8aa854cea3532143858b81c7f33bb5
author: yenatch <[email protected]>
date: Fri Aug 2 16:14:39 EDT 2013

more step handling

--- a/main.asm
+++ b/main.asm
@@ -19532,54 +19532,60 @@
 ; 71c2
 
 
-Function71c2: ; 71c2
+ChangeHappiness: ; 71c2
+; Perform happiness action c on CurPartyMon
+
 	ld a, [CurPartyMon]
 	inc a
 	ld e, a
-	ld d, $0
-	ld hl, PartyCount
+	ld d, 0
+	ld hl, PartySpecies - 1
 	add hl, de
 	ld a, [hl]
-	cp $fd
+	cp EGG
 	ret z
+
 	push bc
 	ld hl, PartyMon1Happiness
-	ld bc, $0030
+	ld bc, PartyMon2 - PartyMon1
 	ld a, [CurPartyMon]
 	call AddNTimes
 	pop bc
+
 	ld d, h
 	ld e, l
+
 	push de
 	ld a, [de]
-	cp $64
-	ld e, $0
+	cp 100
+	ld e, 0
 	jr c, .asm_71ef
 	inc e
-	cp $c8
+	cp 200
 	jr c, .asm_71ef
 	inc e
 
 .asm_71ef
 	dec c
-	ld b, $0
-	ld hl, $7221
+	ld b, 0
+	ld hl, .Actions
 	add hl, bc
 	add hl, bc
 	add hl, bc
-	ld d, $0
+	ld d, 0
 	add hl, de
 	ld a, [hl]
-	cp $64
+	cp 100
 	pop de
+
 	ld a, [de]
-	jr nc, .asm_7209
+	jr nc, .negative
 	add [hl]
 	jr nc, .asm_720d
 	ld a, $ff
 	jr .asm_720d
 
-.asm_7209
+.negative
 	add [hl]
 	jr c, .asm_720d
 	xor a
@@ -19599,9 +19605,149 @@
 	ret
 ; 7221
 
-INCBIN "baserom.gbc", $7221, $7305 - $7221
+.Actions
+	db  +5,  +3,  +2
+	db  +5,  +3,  +2
+	db  +1,  +1,  +0
+	db  +3,  +2,  +1
+	db  +1,  +1,  +0
+	db  -1,  -1,  -1
+	db  -5,  -5, -10
+	db  -5,  -5, -10
+	db  +1,  +1,  +1
+	db  +3,  +3,  +1
+	db  +5,  +5,  +2
+	db  +1,  +1,  +1
+	db  +3,  +3,  +1
+	db +10, +10,  +4
+	db  -5,  -5, -10
+	db -10, -10, -15
+	db -15, -15, -20
+	db  +3,  +3,  +1
+	db +10,  +6,  +4
+; 725a
 
 
+StepHappiness: ; 725a
+; Raise the party's happiness by 1 point every other step cycle.
+
+	ld hl, $dc77
+	ld a, [hl]
+	inc a
+	and 1
+	ld [hl], a
+	ret nz
+
+	ld de, PartyCount
+	ld a, [de]
+	and a
+	ret z
+
+	ld c, a
+	ld hl, PartyMon1Happiness
+.loop
+	inc de
+	ld a, [de]
+	cp EGG
+	jr z, .next
+	inc [hl]
+	jr nz, .next
+	ld [hl], $ff
+
+.next
+	push de
+	ld de, PartyMon2 - PartyMon1
+	add hl, de
+	pop de
+	dec c
+	jr nz, .loop
+	ret
+; 7282
+
+
+DaycareStep: ; 7282
+
+	ld a, [DaycareMan]
+	bit 0, a
+	jr z, .asm_72a4
+
+	ld a, [$df2b] ; level
+	cp 100
+	jr nc, .asm_72a4
+	ld hl, $df16 ; exp
+	inc [hl]
+	jr nz, .asm_72a4
+	dec hl
+	inc [hl]
+	jr nz, .asm_72a4
+	dec hl
+	inc [hl]
+	ld a, [hl]
+	cp $50
+	jr c, .asm_72a4
+	ld a, $50
+	ld [hl], a
+
+.asm_72a4
+	ld a, [DaycareLady]
+	bit 0, a
+	jr z, .asm_72c6
+
+	ld a, [$df64] ; level
+	cp 100
+	jr nc, .asm_72c6
+	ld hl, $df4f ; exp
+	inc [hl]
+	jr nz, .asm_72c6
+	dec hl
+	inc [hl]
+	jr nz, .asm_72c6
+	dec hl
+	inc [hl]
+	ld a, [hl]
+	cp $50
+	jr c, .asm_72c6
+	ld a, $50
+	ld [hl], a
+
+.asm_72c6
+	ld hl, DaycareMan
+	bit 5, [hl] ; egg
+	ret z
+	ld hl, StepsToEgg
+	dec [hl]
+	ret nz
+
+	call RNG
+	ld [hl], a
+	ld hl, $6e1d
+	ld a, $5
+	rst FarCall
+	ld a, [$d265]
+	cp $e6
+	ld b, $50
+	jr nc, .asm_72f8
+	ld a, [$d265]
+	cp $aa
+	ld b, $28
+	jr nc, .asm_72f8
+	ld a, [$d265]
+	cp $6e
+	ld b, $1e
+	jr nc, .asm_72f8
+	ld b, $a
+
+.asm_72f8
+	call RNG
+	cp b
+	ret nc
+	ld hl, DaycareMan
+	res 5, [hl]
+	set 6, [hl]
+	ret
+; 7305
+
+
 SpecialGiveShuckle: ; 7305
 
 ; Adding to the party.
@@ -31281,9 +31427,100 @@
 	jp $600d
 ; 160a9
 
-INCBIN "baserom.gbc", $160a9, $16ecd - $160a9
+INCBIN "baserom.gbc", $160a9, $16e1d - $160a9
 
+Function16e1d: ; 16e1d
+	call $6ed6
+	ld c, $0
+	jp nc, $6eb7
+	ld a, [BreedMon1Species]
+	ld [CurPartySpecies], a
+	ld a, [$df21]
+	ld [TempMonDVs], a
+	ld a, [$df22]
+	ld [$d124], a
+	ld a, $3
+	ld [MonType], a
+	ld a, $24
+	call Predef
+	jr c, .asm_16e70
+	ld b, $1
+	jr nz, .asm_16e48
+	inc b
 
+.asm_16e48
+	push bc
+	ld a, [BreedMon2Species]
+	ld [CurPartySpecies], a
+	ld a, [$df5a]
+	ld [TempMonDVs], a
+	ld a, [$df5b]
+	ld [$d124], a
+	ld a, $3
+	ld [MonType], a
+	ld a, $24
+	call Predef
+	pop bc
+	jr c, .asm_16e70
+	ld a, $1
+	jr nz, .asm_16e6d
+	inc a
+
+.asm_16e6d
+	cp b
+	jr nz, .asm_16e89
+
+.asm_16e70
+	ld c, $0
+	ld a, [BreedMon1Species]
+	cp $84
+	jr z, .asm_16e82
+	ld a, [BreedMon2Species]
+	cp $84
+	jr nz, .asm_16eb7
+	jr .asm_16e89
+
+.asm_16e82
+	ld a, [BreedMon2Species]
+	cp $84
+	jr z, .asm_16eb7
+
+.asm_16e89
+	call $6ebc
+	ld c, $ff
+	jp z, $6eb7
+	ld a, [BreedMon2Species]
+	ld b, a
+	ld a, [BreedMon1Species]
+	cp b
+	ld c, $fe
+	jr z, .asm_16e9f
+	ld c, $80
+
+.asm_16e9f
+	ld a, [$df12]
+	ld b, a
+	ld a, [$df4b]
+	cp b
+	jr nz, .asm_16eb7
+	ld a, [$df13]
+	ld b, a
+	ld a, [$df4c]
+	cp b
+	jr nz, .asm_16eb7
+	ld a, c
+	sub $4d
+	ld c, a
+
+.asm_16eb7
+	ld a, c
+	ld [$d265], a
+	ret
+; 16ebc
+
+INCBIN "baserom.gbc", $16ebc, $16ecd - $16ebc
+
+
 Function16ecd: ; 16ecd
 	rlca
 	ld b, a
@@ -31293,9 +31530,95 @@
 	ret
 ; 16ed6
 
-INCBIN "baserom.gbc", $16ed6, $174ba - $16ed6
+Function16ed6: ; 16ed6
+	ld a, [BreedMon2Species]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BaseEggGroups]
+	cp $ff
+	jr z, .asm_16f3a
+	ld a, [BreedMon1Species]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BaseEggGroups]
+	cp $ff
+	jr z, .asm_16f3a
+	ld a, [BreedMon2Species]
+	cp $84
+	jr z, .asm_16f3c
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BaseEggGroups]
+	push af
+	and $f
+	ld b, a
+	pop af
+	and $f0
+	swap a
+	ld c, a
+	ld a, [BreedMon1Species]
+	cp $84
+	jr z, .asm_16f3c
+	ld [CurSpecies], a
+	push bc
+	call GetBaseData
+	pop bc
+	ld a, [BaseEggGroups]
+	push af
+	and $f
+	ld d, a
+	pop af
+	and $f0
+	swap a
+	ld e, a
+	ld a, d
+	cp b
+	jr z, .asm_16f3c
+	cp c
+	jr z, .asm_16f3c
+	ld a, e
+	cp b
+	jr z, .asm_16f3c
+	cp c
+	jr z, .asm_16f3c
 
+.asm_16f3a
+	and a
+	ret
 
+.asm_16f3c
+	scf
+	ret
+; 16f3e
+
+Function16f3e: ; 16f3e
+	ld de, PartySpecies
+	ld hl, PartyMon1Happiness
+	ld c, 0
+.loop
+	ld a, [de]
+	inc de
+	cp $ff
+	ret z
+	cp EGG
+	jr nz, .next
+	dec [hl]
+	jr nz, .next
+	ld a, 1
+	and a
+	ret
+
+.next
+	push de
+	ld de, PartyMon2 - PartyMon1
+	add hl, de
+	pop de
+	jr .loop
+; 16f5e
+
+INCBIN "baserom.gbc", $16f5e, $174ba - $16f5e
+
+
 SECTION "bank6",DATA,BANK[$6]
 
 Tileset03GFX: ; 0x18000
@@ -34474,7 +34797,7 @@
 	ld c, $13
 
 .asm_270bd
-	callab Function71c2
+	callab ChangeHappiness
 	ret
 ; 270c4
 
@@ -39585,7 +39908,7 @@
 .asm_3d1dc
 	ld a, [CurBattleMon]
 	ld [CurPartyMon], a
-	callab Function71c2
+	callab ChangeHappiness
 	ld a, [$d0ee]
 	and $c0
 	add $1
@@ -45314,7 +45637,7 @@
 	or [hl]
 	jr z, .asm_3f5fc
 	ld c, $4
-	callab Function71c2
+	callab ChangeHappiness
 
 .asm_3f5fc
 	pop bc
@@ -48461,9 +48784,7 @@
 	and a
 	jr z, .asm_49300
 	ld c, $5
-	ld hl, $71c2
-	ld a, $1
-	rst FarCall
+	callab ChangeHappiness
 	jr .asm_49305
 
 .asm_49300
@@ -52246,8 +52567,157 @@
 	ret
 ; 505da
 
-INCBIN "baserom.gbc", $505da, $506bc - $505da
+Function505da: ; 505da
+	ld a, [PartyCount]
+	and a
+	jr z, .asm_5062c
+	xor a
+	ld c, 7
+	ld hl, EngineBuffer1
+.asm_505e6
+	ld [hli], a
+	dec c
+	jr nz, .asm_505e6
+	xor a
+	ld [CurPartyMon], a
+.asm_505ee
+	call Function5062e
+	jr nc, .asm_50605
+	ld a, [CurPartyMon]
+	ld e, a
+	ld d, 0
+	ld hl, CurFruit
+	add hl, de
+	ld [hl], c
+	ld a, [EngineBuffer1]
+	or c
+	ld [EngineBuffer1], a
 
+.asm_50605
+	ld a, [PartyCount]
+	ld hl, CurPartyMon
+	inc [hl]
+	cp [hl]
+	jr nz, .asm_505ee
+	ld a, [EngineBuffer1]
+	and $2
+	jr nz, .asm_50622
+	ld a, [EngineBuffer1]
+	and $1
+	jr z, .asm_5062c
+	call Function50658
+	xor a
+	ret
+
+.asm_50622
+	ld a, $14
+	ld hl, $4669
+	call PushScriptPointer
+	scf
+	ret
+
+.asm_5062c
+	xor a
+	ret
+; 5062e
+
+Function5062e: ; 5062e
+	ld a, $20
+	call GetPartyParamLocation
+	ld a, [hl]
+	and $8
+	ret z
+	ld a, $22
+	call GetPartyParamLocation
+	ld a, [hli]
+	ld b, a
+	ld c, [hl]
+	or c
+	ret z
+	dec bc
+	ld [hl], c
+	dec hl
+	ld [hl], b
+	ld a, b
+	or c
+	jr nz, .asm_50654
+	ld a, $20
+	call GetPartyParamLocation
+	ld [hl], $0
+	ld c, $2
+	scf
+	ret
+
+.asm_50654
+	ld c, $1
+	scf
+	ret
+; 50658
+
+Function50658: ; 50658
+	ld de, SFX_POISON
+	call StartSFX
+	ld b, $2
+	ld a, $2e
+	call Predef
+	call DelayFrame
+	ret
+; 50669
+
+UnknownScript_0x50669: ; 50669
+	3callasm $14, $4658
+	loadfont
+	3callasm $14, $467b
+	iffalse UnknownScript_0x50677
+	loadmovesprites
+	end
+; 50677
+
+UnknownScript_0x50677: ; 50677
+	3jump BANK(UnknownScript_0x124c8), UnknownScript_0x124c8
+; 5067b
+
+Function5067b: ; 5067b
+	xor a
+	ld [CurPartyMon], a
+	ld de, CurFruit
+.asm_50682
+	push de
+	ld a, [de]
+	and 2
+	jr z, .asm_5069c
+	ld c, 7
+	callba Function71c2
+	callba GetPartyNick
+	ld hl, PoisonFaintText
+	call PrintText
+
+.asm_5069c
+	pop de
+	inc de
+	ld hl, CurPartyMon
+	inc [hl]
+	ld a, [PartyCount]
+	cp [hl]
+	jr nz, .asm_50682
+	ld a, $14
+	call Predef
+	ld a, d
+	ld [ScriptVar], a
+	ret
+; 506b2
+
+PoisonFaintText: ; 506b2
+	text_jump UnknownText_0x1c0acc, BANK(UnknownText_0x1c0acc)
+	db "@"
+; 506b7
+
+PoisonWhiteOutText: ; 506b7
+	text_jump UnknownText_0x1c0ada, BANK(UnknownText_0x1c0ada)
+	db "@"
+; 506bc
+
+
 Function506bc: ; 506bc
 	ld hl, $46c8
 	call Function31cd
@@ -59261,9 +59731,7 @@
 	inc [hl]
 	jr nz, .asm_96b9c
 
-	ld a, $1
-	ld hl, $725a
-	rst FarCall
+	callba StepHappiness
 
 .asm_96b9c
 	ld a, [StepCount]
@@ -59270,15 +59738,11 @@
 	cp $80
 	jr nz, .asm_96bab
 
-	ld a, $5
-	ld hl, $6f3e
-	rst FarCall
+	callba Function16f3e
 	jr nz, .asm_96bcf
 
 .asm_96bab
-	ld a, $1
-	ld hl, $7282
-	rst FarCall
+	callba DaycareStep
 
 	ld hl, PoisonStepCount
 	ld a, [hl]