ref: 179decd644ae723c2efa30a282f459a44c16c6d3
parent: 7f96387411d8f739f90e8693282ed131eedf70f5
author: yenatch <[email protected]>
date: Wed Aug 21 13:18:58 EDT 2013
GiveOddEgg and related asm That's it for bank 7e
--- a/main.asm
+++ b/main.asm
@@ -71766,9 +71766,109 @@
db "Please wait…", $57
; 0x11ac3e
-INCBIN "baserom.gbc", $11ac3e, $11bc9e - $11ac3e
+INCBIN "baserom.gbc", $11ac3e, $11b98f - $11ac3e
+Function11b98f: ; 11b98f
+ ld hl, PartyCount
+ ld a, [hl]
+ ld e, a
+ inc [hl]
+ ld a, [BGMapBuffer]
+ ld l, a
+ ld a, [$cd21]
+ ld h, a
+ inc hl
+ ld bc, PartySpecies
+ ld d, e
+.asm_11b9a2
+ inc bc
+ dec d
+ jr nz, .asm_11b9a2
+ ld a, e
+ ld [CurPartyMon], a
+ ld a, [hl]
+ ld [bc], a
+ inc bc
+ ld a, $ff
+ ld [bc], a
+ ld hl, PartyMon1Species
+ ld bc, $0030
+ ld a, e
+ ld [$cd2a], a
+.asm_11b9ba
+ add hl, bc
+ dec a
+ and a
+ jr nz, .asm_11b9ba
+ ld e, l
+ ld d, h
+ ld a, [CreditsTimer]
+ ld l, a
+ ld a, [$cd23]
+ ld h, a
+ ld bc, $0030
+ call CopyBytes
+ ld hl, PartyMon1OT
+ ld bc, $000b
+ ld a, [$cd2a]
+.asm_11b9d8
+ add hl, bc
+ dec a
+ and a
+ jr nz, .asm_11b9d8
+ ld e, l
+ ld d, h
+ ld a, [$cd24]
+ ld l, a
+ ld a, [$cd25]
+ ld h, a
+ ld bc, $000a
+ call CopyBytes
+ ld a, $50
+ ld [de], a
+ ld hl, PartyMon1Nickname
+ ld bc, $000b
+ ld a, [$cd2a]
+.asm_11b9f9
+ add hl, bc
+ dec a
+ and a
+ jr nz, .asm_11b9f9
+ ld e, l
+ ld d, h
+ ld a, [$cd26]
+ ld l, a
+ ld a, [$cd27]
+ ld h, a
+ ld bc, $000a
+ call CopyBytes
+ ld a, $50
+ ld [de], a
+ ld hl, $a600
+ ld bc, $002f
+ ld a, [$cd2a]
+.asm_11ba1a
+ add hl, bc
+ dec a
+ and a
+ jr nz, .asm_11ba1a
+ ld a, $0
+ call GetSRAMBank
+ ld e, l
+ ld d, h
+ ld a, [$cd28]
+ ld l, a
+ ld a, [$cd29]
+ ld h, a
+ ld bc, $002f
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 11ba38
+INCBIN "baserom.gbc", $11ba38, $11bc9e - $11ba38
+
+
SECTION "bank47",ROMX,BANK[$47]
Function11c000: ; 11c000
@@ -73883,7 +73983,102 @@
INCLUDE "stats/battle_tower.asm"
; 1fb4b6
-INCBIN "baserom.gbc", $1fb4b6, $1fb56e - $1fb4b6
+
+GiveOddEgg: ; 1fb4b6
+
+; Figure out which egg to give.
+ call RNG
+ ld hl, .Probabilities
+ ld c, 0
+ ld b, c
+.next
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, d
+ cp $ff
+ jr nz, .first
+ ld a, e
+ cp $ff
+ jr z, .done
+.first
+ ld a, [hRandomSub]
+ cp d
+ jr c, .done
+ jr z, .second
+ jr .good
+.second
+ ld a, [hRandomAdd]
+ cp e
+ jr c, .done
+ jr z, .done
+.good
+ inc bc
+ jr .next
+.done
+
+ ld hl, OddEggs
+ ld a, OddEgg2 - OddEgg1
+ call AddNTimes
+ ld de, EnemyMoveAnimation
+ ld bc, $0046
+ call CopyBytes
+ ld a, EGG_TICKET
+ ld [CurItem], a
+ ld a, $1
+ ld [$d10c], a
+ ld a, $ff
+ ld [$d107], a
+ ld hl, NumItems
+ call Function2f53
+ ld a, EGG
+ ld [$cd2a], a
+ ld a, $29
+ ld [$cd20], a
+ ld a, $cd
+ ld [$cd21], a
+ ld a, $8
+ ld [$cd22], a
+ ld a, $c6
+ ld [$cd23], a
+
+ ld hl, .Odd
+ ld de, $cd2b
+ ld bc, $000b
+ call CopyBytes
+
+ ld a, $2b
+ ld [$cd24], a
+ ld a, $cd
+ ld [$cd25], a
+ ld a, $38
+ ld [$cd26], a
+ ld a, $c6
+ ld [$cd27], a
+ callba Function11b98f
+ ret
+; 1fb546
+
+.Odd
+ 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%
+; 1fb56e
OddEggs: ; 1fb56e
INCLUDE "stats/odd_eggs.asm"
--- a/stats/odd_eggs.asm
+++ b/stats/odd_eggs.asm
@@ -1,3 +1,4 @@
+OddEgg1:
db PICHU
db NO_ITEM
db THUNDERSHOCK, CHARM, DIZZY_PUNCH, NONE
@@ -24,6 +25,7 @@
bigdw 8 ; SDef
db "EGG@@@@@@@@"
+OddEgg2:
db PICHU
db NO_ITEM
db THUNDERSHOCK, CHARM, DIZZY_PUNCH, NONE