shithub: pokecrystal

Download patch

ref: b6793b65df8472aed4cd58cf05e86c399dd0c3ea
parent: e2ec8a1d1331517bd2b09940ab1d688bd4d698c9
author: yenatch <[email protected]>
date: Fri Jul 18 01:28:30 EDT 2014

Use a macro for Odd Egg probabilities.

--- a/data/odd_eggs.asm
+++ b/data/odd_eggs.asm
@@ -1,43 +1,52 @@
 GiveOddEgg: ; 1fb4b6
 
-; Figure out which egg to give.
+	; Figure out which egg to give.
+
+	; Compare a random word to
+	; probabilities out of 0xffff.
 	call Random
 	ld hl, .Probabilities
 	ld c, 0
 	ld b, c
-.next
+.loop
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
 	ld d, a
+
+	; Break on $ffff.
 	ld a, d
-	cp $ff
-	jr nz, .first
+	cp $ffff / $100
+	jr nz, .not_done
 	ld a, e
-	cp $ff
+	cp $ffff % $100
 	jr z, .done
-.first
-	ld a, [hRandomSub]
+.not_done
+
+	; Break when [hRandom] <= de.
+	ld a, [hRandom + 1]
 	cp d
 	jr c, .done
-	jr z, .second
-	jr .good
-.second
-	ld a, [hRandomAdd]
+	jr z, .ok
+	jr .next
+.ok
+	ld a, [hRandom + 0]
 	cp e
 	jr c, .done
 	jr z, .done
-.good
+.next
 	inc bc
-	jr .next
+	jr .loop
 .done
 
 	ld hl, OddEggs
 	ld a, OddEgg2 - OddEgg1
 	call AddNTimes
+
 	ld de, $c608
 	ld bc, $0046
 	call CopyBytes
+
 	ld a, EGG_TICKET
 	ld [CurItem], a
 	ld a, $1
@@ -46,29 +55,31 @@
 	ld [$d107], a
 	ld hl, NumItems
 	call TossItem
+
 	ld a, EGG
 	ld [$cd2a], a
-	ld a, $29
+
+	ld a, $cd29 % $100
 	ld [$cd20], a
-	ld a, $cd
+	ld a, $cd29 / $100
 	ld [$cd21], a
-	ld a, $8
+	ld a, $c608 % $100
 	ld [$cd22], a
-	ld a, $c6
+	ld a, $c608 / $100
 	ld [$cd23], a
 
 	ld hl, .Odd
 	ld de, $cd2b
-	ld bc, $000b
+	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 
-	ld a, $2b
+	ld a, $cd2b % $100
 	ld [$cd24], a
-	ld a, $cd
+	ld a, $cd2b / $100
 	ld [$cd25], a
-	ld a, $38
+	ld a, $c638 % $100
 	ld [$cd26], a
-	ld a, $c6
+	ld a, $c638 / $100
 	ld [$cd27], a
 	callba Function11b98f
 	ret
@@ -78,20 +89,28 @@
 	db "ODD@@@@@@@@@"
 
 .Probabilities
-	dw $147a ; 92% ->  8%
-	dw $170a ; 91% ->  1%
-	dw $3fff ; 75% -> 16%
-	dw $47ad ; 72% ->  3%
-	dw $70a3 ; 56% -> 16%
-	dw $7851 ; 53% ->  3%
-	dw $9c28 ; 39% -> 14%
-	dw $a147 ; 37% ->  2%
-	dw $bae0 ; 27% -> 10%
-	dw $bfff ; 25% ->  2%
-	dw $deb7 ; 13% -> 12%
-	dw $e3d6 ; 11% ->  2%
-	dw $fd6f ;  1% -> 10%
-	dw $ffff ;  0% ->  1%
+
+prob: MACRO
+prob_total = prob_total + (\1)
+	dw prob_total * $ffff / 100
+ENDM
+
+prob_total = 0
+
+	prob 8
+	prob 1
+	prob 16
+	prob 3
+	prob 16
+	prob 3
+	prob 14
+	prob 2
+	prob 10
+	prob 2
+	prob 12
+	prob 2
+	prob 10
+	prob 1
 ; 1fb56e
 
 
--- a/hram.asm
+++ b/hram.asm
@@ -60,6 +60,7 @@
 
 hTileAnimFrame     EQU $ffdf
 
+hRandom            EQU $ffe1
 hRandomAdd         EQU $ffe1
 hRandomSub         EQU $ffe2