*************************************************************************** *** 卵を生む/生まない その生まれやすさを決めるルーチン *************************************************************************** ROM5:78E9 CD A2 79 call 79A2 | 相性チェック C:卵を生む組み合わせ ROM5:78EC 0E 00 ld c,00 | ROM5:78EE D2 83 79 jp nc,7983 | 7983の結果卵を生まない組み合わせは7983へ ---------------ここから卵の生まれやすさ(D143)を作る--------------- ROM5:78F1 FA E1 DB ld a,(DBE1) | じいさんに預けたポケモン ROM5:78F4 EA FE CF ld (CFFE),a | (CFFE)←(DBE1) 種類 ROM5:78F7 FA F6 DB ld a,(DBF6) | (D01A)←(DBF6) 個体値1 ROM5:78FA EA 1A D0 ld (D01A),a | (D01B)←(DBF7) 個体値2 ROM5:78FD FA F7 DB ld a,(DBF7) | ROM5:7900 EA 1B D0 ld (D01B),a | ROM5:7903 3E 03 ld a,03 | ROM5:7905 EA 53 CE ld (CE53),a | ROM5:7908 3E 24 ld a,24 * ROM5:790A CD 05 2E call 2E05 * 性別チェック [Z]=♀ [NZ]=♂ [C]=ふめい ROM5:790D 38 2D jr c,793C | 性別ふめいな種類→793Ch ROM5:790F 06 01 ld b,01 + ROM5:7911 20 01 jr nz,7914 + b=01 ♀ ROM5:7913 04 inc b + b=02 ♂ ROM5:7914 C5 push bc + ----- ROM5:7915 FA 10 DC ld a,(DC10) * 上の[|]と同じことをばあさんに預けた ROM5:7918 EA FE CF ld (CFFE),a * ポケモンでやる ROM5:791B FA 25 DC ld a,(DC25) * ROM5:791E EA 1A D0 ld (D01A),a * ROM5:7921 FA 26 DC ld a,(DC26) * ROM5:7924 EA 1B D0 ld (D01B),a * ROM5:7927 3E 03 ld a,03 * ROM5:7929 EA 53 CE ld (CE53),a * ROM5:792C 3E 24 ld a,24 * ROM5:792E CD 05 2E call 2E05 * 性別チェック [Z]=♀ [NZ]=♂ [C]=ふめい ROM5:7931 C1 pop bc * ROM5:7932 38 08 jr c,793C * 性別ふめいな種類→793Ch ROM5:7934 3E 01 ld a,01 * ROM5:7936 20 01 jr nz,7939 * a=01 ♀ ROM5:7938 3C inc a * a=02 ♂ ROM5:7939 B8 cp b | ROM5:793A 20 19 jr nz,7955 | ホモも組み合わせ→個体値チェック(7955) ----- ROM5:793C 0E 00 ld c,00 ^ ***メタモンチェック*** ROM5:793E FA E1 DB ld a,(DBE1) ^ ROM5:7941 FE 84 cp 84 ^ (性別不明)x(メタモン)→生まれる ROM5:7943 28 09 jr z,794E ^ (性別不明)x(性別不明)→× ROM5:7945 FA 10 DC ld a,(DC10) ^ (メタモン)x(メタモン)→× ROM5:7948 FE 84 cp 84 ^ ROM5:794A 20 37 jr nz,7983 ^ ROM5:794C 18 07 jr 7955 ^ ROM5:794E FA 10 DC ld a,(DC10) ^ ROM5:7951 FE 84 cp 84 ^ ROM5:7953 28 2E jr z,7983 ^ ----- ROM5:7955 CD 88 79 call 7988 * 個体値チェック ROM5:7958 0E FF ld c,FF * ↑のチェックでOKだと「すぐ生まれる」 ROM5:795A CA 83 79 jp z,7983 * ↑ (D143)=FFh ROM5:795D FA 10 DC ld a,(DC10) | ROM5:7960 47 ld b,a | ROM5:7961 FA E1 DB ld a,(DBE1) | ROM5:7964 B8 cp b | 同じ種類のポケモン c=FEh ROM5:7965 0E FE ld c,FE | ROM5:7967 28 02 jr z,796B | ROM5:7969 0E 80 ld c,80 | 違う種類のポケモン c=80h ROM5:796B FA E7 DB ld a,(DBE7) : ROM5:796E 47 ld b,a : DBE6-7 じいさんに預けたポケモンのID ROM5:796F FA 16 DC ld a,(DC16) : DC16-7 ばあさんに預けたポケモンのID ROM5:7972 B8 cp b : ROM5:7973 20 0E jr nz,7983 : ROM5:7975 FA E8 DB ld a,(DBE8) : ROM5:7978 47 ld b,a : ROM5:7979 FA 17 DC ld a,(DC17) : ROM5:797C B8 cp b : ROM5:797D 20 04 jr nz,7983 : ROM5:797F 79 ld a,c : ROM5:7980 D6 4D sub 4D : IDが同じなら FE(or80) - 4D = B1(or33) ROM5:7982 4F ld c,a : ROM5:7983 79 ld a,c : ROM5:7984 EA 43 D1 ld (D143),a : (D143)=c (00/33/80/B1/FE/FF) ROM5:7987 C9 ret ---------------------個体値チェック---------------- ROM5:7988 FA F6 DB ld a,(DBF6) | DBF6-7 じいさんに預けたポケモンの個体値 ROM5:798B E6 0F and 0F | ROM5:798D 47 ld b,a | b=(DBF6) and 0F #下位4ビット(守り) ROM5:798E FA 25 DC ld a,(DC25) : ROM5:7991 E6 0F and 0F : a=(DC25) and 0F #下位4ビット(守り) ROM5:7993 B8 cp b : ROM5:7994 C0 ret nz : 一致しない→残念でした ROM5:7995 FA F7 DB ld a,(DBF7) | ROM5:7998 E6 07 and 07 | ROM5:799A 47 ld b,a | b=(DBF7) and 07 #下位3ビット(特殊) ROM5:799B FA 26 DC ld a,(DC26) : ROM5:799E E6 07 and 07 : a=(DC26) and 07 #下位3ビット(特殊) ROM5:79A0 B8 cp b * ROM5:79A1 C9 ret * 一致すれば[Z] あたり! ---------------------相性チェック---------------- ROM5:79A2 FA 10 DC ld a,(DC10) | ばあさんに預けたポケモン ROM5:79A5 EA 54 CE ld (CE54),a | ROM5:79A8 CD DD 39 call 39DD | pokeNoに対応するデーターをD112〜D131に書く ROM5:79AB FA 29 D1 ld a,(D129) | 配合タイプ ROM5:79AE FE FF cp FF | ROM5:79B0 28 54 jr z,7A06 | FF:卵を生まないポケモン and a して ret ----- ROM5:79B2 FA E1 DB ld a,(DBE1) | じいさんに預けたポケモン ROM5:79B5 EA 54 CE ld (CE54),a | ROM5:79B8 CD DD 39 call 39DD | 上と同じ ROM5:79BB FA 29 D1 ld a,(D129) | ROM5:79BE FE FF cp FF | ROM5:79C0 28 44 jr z,7A06 | ----- ROM5:79C2 FA 10 DC ld a,(DC10) | ばあさんに預けたポケモン ROM5:79C5 FE 84 cp 84 | =メタモン ROM5:79C7 28 3F jr z,7A08 | だと 7A08 / Cを立ててret→生まれる ROM5:79C9 EA 54 CE ld (CE54),a + a=ばあさんに預けたポケモン ROM5:79CC CD DD 39 call 39DD + ROM5:79CF FA 29 D1 ld a,(D129) + (D129)=配合タイプ ROM5:79D2 F5 push af + ROM5:79D3 E6 0F and 0F + ROM5:79D5 47 ld b,a + 例えば配合タイプ=17 だと ROM5:79D6 F1 pop af + この処理で BC=0701 となる ROM5:79D7 E6 F0 and F0 + ROM5:79D9 CB 37 swap a + ROM5:79DB 4F ld c,a + ----- ROM5:79DC FA E1 DB ld a,(DBE1) | じいさんに預けたポケモン ROM5:79DF FE 84 cp 84 | =メタモン ROM5:79E1 28 25 jr z,7A08 | だと 7A08 / Cを立ててret→生まれる ROM5:79E3 EA 54 CE ld (CE54),a * ROM5:79E6 C5 push bc * ROM5:79E7 CD DD 39 call 39DD * ROM5:79EA C1 pop bc * 上の[+]の処理と同じことを ROM5:79EB FA 29 D1 ld a,(D129) * じいさんに預けたポケモンでやる ROM5:79EE F5 push af * ROM5:79EF E6 0F and 0F * 例えば配合タイプ=37h だと ROM5:79F1 57 ld d,a * DE=0703 となる ROM5:79F2 F1 pop af * ROM5:79F3 E6 F0 and F0 * ROM5:79F5 CB 37 swap a * ROM5:79F7 5F ld e,a * ----- ROM5:79F8 7A ld a,d | 相性チェック#同じ数字があれば 7A08 ROM5:79F9 B8 cp b | D==B ? ROM5:79FA 28 0C jr z,7A08 | ROM5:79FC B9 cp c | D==C ? ROM5:79FD 28 09 jr z,7A08 | ROM5:79FF 7B ld a,e | ROM5:7A00 B8 cp b | E==B ? ROM5:7A01 28 05 jr z,7A08 | ROM5:7A03 B9 cp c | E==B ? ROM5:7A04 28 02 jr z,7A08 | ----- ROM5:7A06 A7 and a + ここに飛んでくると「生まれない」 ROM5:7A07 C9 ret + ----- ROM5:7A08 37 scf * 卵を生む組み合わせの時、scf=set carry flag ROM5:7A09 C9 ret * *************************************************************************** *** うまれる卵が引き継ぐ技を決めるルーチン *************************************************************************** #ここに来るまでに、とりあえず生まれるポケモンがL5までに覚える技が、  引き継がれる技リストDC3E〜に入っている(スリープだったら01 1A 32) ROM5:7BAB CD 83 7C call 7C83 | 預けられたポケモンが知っている技 ROM5:7BAE 54 ld d,h | 爺: DBE3〜 婆:DC12〜 ♀のアドレス ROM5:7BAF 5D ld e,l | メタモンがいる場合はメタモンでない方 ROM5:7BB0 06 04 ld b,04 * ----ここから技4つ分のループ ----- ROM5:7BB2 1A ld a,(de) * 技を4つ覚えていない時→ ret ROM5:7BB3 A7 and a * ROM5:7BB4 28 19 jr z,7BCF * ROM5:7BB6 21 3E DC ld hl,DC3E | HL=卵が引き継ぐ技 DE=♀の技 ROM5:7BB9 0E 04 ld c,04 | ROM5:7BBB 1A ld a,(de) + 親が覚えている技がすでにリストにある ROM5:7BBC BE cp (hl) + →次の技へ(7BCB) ROM5:7BBD 28 0C jr z,7BCB + ROM5:7BBF 23 inc hl + ROM5:7BC0 0D dec c + ROM5:7BC1 20 F8 jr nz,7BBB + ROM5:7BC3 CD D0 7B call 7BD0 | 伝承技チェック OK→[C] ROM5:7BC6 30 03 jr nc,7BCB | ROM5:7BC8 CD 55 7C call 7C55 | OKな時 技リストを更新 ROM5:7BCB 13 inc de | 次の親の技 ROM5:7BCC 05 dec b | ROM5:7BCD 20 E3 jr nz,7BB2 | ----- ROM5:7BCF C9 ret ----- 伝承技チェック ----- DE:親の知ってる技 HL:伝承リストにある技 ROM5:7BD0 C5 push bc ROM5:7BD1 FA 3C DC ld a,(DC3C) | 生まれるポケモン ROM5:7BD4 3D dec a | ROM5:7BD5 4F ld c,a | ROM5:7BD6 06 00 ld b,00 | HL=7B07+(pokeNo-1)*2 ROM5:7BD8 21 07 7B ld hl,7B07 | ROM5:7BDB 09 add hl,bc | ROM5:7BDC 09 add hl,bc | *** OK技リスト *** ROM5:7BDD 3E 08 ld a,08 | HL=A:(HL..HL+1) ROM5:7BDF CD F8 30 call 30F8 | bank[A]のHLで示される値がHLに入る ROM5:7BE2 3E 08 ld a,08 | ROM5:7BE4 CD E4 30 call 30E4 | A=A:(HL) 上と似てる。結果はAに入る ROM5:7BE7 FE FF cp FF | ROM5:7BE9 28 08 jr z,7BF3 | リストの終わりだと、♂について調べる(7BF3) ROM5:7BEB 47 ld b,a | ROM5:7BEC 1A ld a,(de) | 親の知っている技が、OKリストにある? ROM5:7BED B8 cp b | ROM5:7BEE 28 5F jr z,7C4F | ある時→ scf / ret ROM5:7BF0 23 inc hl | ない時→ リストの次の技 ROM5:7BF1 18 EF jr 7BE2 | -----♂の技チェック ROM5:7BF3 CD F7 7C call 7CF7 *メタモンチェック ROM5:7BF6 06 04 ld b,04 + ROM5:7BF8 1A ld a,(de) + ROM5:7BF9 BE cp (hl) + ROM5:7BFA 28 06 jr z,7C02 + ♂がその技を知っている→7C02 ROM5:7BFC 23 inc hl +       知らない→7C32 ROM5:7BFD 05 dec b + ROM5:7BFE 28 32 jr z,7C32 + ROM5:7C00 18 F6 jr 7BF8 + ----- レベルアップで覚える技? ROM5:7C02 FA 3C DC ld a,(DC3C) | 生まれるポケモンNo. ROM5:7C05 3D dec a | ROM5:7C06 4F ld c,a | ROM5:7C07 06 00 ld b,00 | ROM5:7C09 21 5F 69 ld hl,695F | このあたりは ROM5:7C0C 09 add hl,bc | レベルアップで覚える ROM5:7C0D 09 add hl,bc | 技のリストから、 ROM5:7C0E 3E 10 ld a,10 | その技があるかどうか探す ROM5:7C10 CD F8 30 call 30F8 | ROM5:7C13 3E 10 ld a,10 | ROM5:7C15 CD E4 30 call 30E4 | ROM5:7C18 23 inc hl | ROM5:7C19 A7 and a | ROM5:7C1A 20 F7 jr nz,7C13 | ROM5:7C1C 3E 10 ld a,10 | ROM5:7C1E CD E4 30 call 30E4 | ROM5:7C21 A7 and a | ROM5:7C22 28 0E jr z,7C32 | ROM5:7C24 23 inc hl | ROM5:7C25 3E 10 ld a,10 | ROM5:7C27 CD E4 30 call 30E4 | ROM5:7C2A 47 ld b,a | ROM5:7C2B 1A ld a,(de) | ROM5:7C2C B8 cp b | ROM5:7C2D 28 20 jr z,7C4F | あった!→ scf / ret ROM5:7C2F 23 inc hl | ROM5:7C30 18 EA jr 7C1C | ----- わざ/ひでんマシンチェック ROM5:7C32 21 00 5A ld hl,5A00 | ROM5:7C35 3E 04 ld a,04 | ROM5:7C37 CD E4 30 call 30E4 | マシンで覚えられる技のリスト ROM4:5A00 DF 1D AE CD 2E 5C C0 F9 F4 ED F1 E6 AD 3B 3F C4 B6 F0 CA CB DA 4C E7 E1 57 59 D8 5B 5E F7 BD 68 08 CF D6 BC C9 7E 81 6F 09 8A C5 9C D5 A8 D3 07 D2 AB 0F 13 39 46 94 FA 7F 00 ROM5:7C3A 23 inc hl | ROM5:7C3B A7 and a | ROM5:7C3C 28 14 jr z,7C52 | リストになければおしまい→伝承されない ROM5:7C3E 47 ld b,a | ROM5:7C3F 1A ld a,(de) | ROM5:7C40 B8 cp b | ROM5:7C41 20 F2 jr nz,7C35 | ROM5:7C43 EA 3F D1 ld (D13F),a * ここから親の技がマシンで覚えられる技の時 ROM5:7C46 3E 0E ld a,0E * ROM5:7C48 CD 05 2E call 2E05 * (多分)改造チェック 04:59BFだと思う ROM5:7C4B 79 ld a,c * ROM5:7C4C A7 and a * ROM5:7C4D 28 03 jr z,7C52 * NG なら覚えられない ROM5:7C4F C1 pop bc * ROM5:7C50 37 scf * OK な時 ROM5:7C51 C9 ret * ROM5:7C52 C1 pop bc * ROM5:7C53 A7 and a * NG な時 ROM5:7C54 C9 ret * ROM5:7C55 D5 push de | ROM5:7C56 C5 push bc | ROM5:7C57 1A ld a,(de) | ROM5:7C58 47 ld b,a | ROM5:7C59 21 3E DC ld hl,DC3E | ROM5:7C5C 0E 04 ld c,04 | ROM5:7C5E 2A ldi a,(hl) * ROM5:7C5F A7 and a * ROM5:7C60 28 11 jr z,7C73 * 技が4つ埋まっていなければ→7C73 ROM5:7C62 0D dec c * ROM5:7C63 20 F9 jr nz,7C5E * ROM5:7C65 11 3E DC ld de,DC3E : 技があふれたら左にずらす ROM5:7C68 21 3F DC ld hl,DC3F : DE HL ROM5:7C6B 2A ldi a,(hl) : (DC3E)←(DC3F) ROM5:7C6C 12 ld (de),a : ROM5:7C6D 13 inc de : ROM5:7C6E 2A ldi a,(hl) : ROM5:7C6F 12 ld (de),a : (DC3F)←(DC40) ROM5:7C70 13 inc de : ROM5:7C71 2A ldi a,(hl) : ROM5:7C72 12 ld (de),a : (DC40)←(DC41) ROM5:7C73 2B dec hl : ROM5:7C74 70 ld (hl),b : (DC41)←b (伝承される技) ROM5:7C75 21 3E DC ld hl,DC3E | ROM5:7C78 11 53 DC ld de,DC53 | ROM5:7C7B 3E 05 ld a,05 | ROM5:7C7D CD 05 2E call 2E05 | なんでしょ(^^; 03:155D ROM5:7C80 C1 pop bc | ROM5:7C81 D1 pop de | ROM5:7C82 C9 ret |