あなたが探している情報は、この日記には記されていない可能性が高いです。(検索で来た人用)
にらどんは一杯500円。尚、出前は承っておりません。ご了承下さい。

金銀VC 任意コード実行

;手持ちの6番目の種族をボールポケット1番目の個数に応じて変更
;@mail
;ぜ/がゆぼ5せづざはぞまづのョキ
;ゥゃれぜをがるひゼづの

000	ld l,F3
002	ld h,D5
004	ld a,FB
006	cp (hl)
007	ldd (hl),a
008	dec hl

009	jp z,CF2F
012	ldd (hl),a
013	ret

014	xor a
015	add (hl)
016	ld (DAE0),a
019	ld l,DD
021	ld h,D9
023	rrc l
025	ldd (hl),a
026	ret

どうやらaレジスタを使う際には"xor a"で初期化したほうがいいらしい。最初の代入は"add"のがいいらしい。
ldした時にフラグが変更されないのはわかるんだけど、そのせいで何かバグが発生するってのはイマイチわからない。フラグ利用しないなら関係なくない?
これはバグ取ったついでにコード整理と1バイト削減した最新版です。

;手持ちの6番目の経験値を調整
;経験値中位下位を0xd8c9に設定
;*Lv99でなければ使うたびに経験値を65536増加
;-経験値タイプによって使用回数が異なるが低レベルからだと12〜18回で99止めにできる
;-経験値をレベルに反映させるには育て屋に預けてすぐ引き取る
;*Lv99なら使うたびに経験値を1増加
;-性格調整用
;@mail
;ぜ9がれョににダせぜゥぐグぼのづ
;にダづどの

000	ld l,FF
002	ld h,DA
004	xor a
005	add a,C6
007	rrca
008	cp (hl)

009	ld l,EA
011	jr z,+07

013	ld a,C9
015	ldd (hl),a
016	add a,0F
018	ldd (hl),a

019	inc (hl)
020	ret

こちらもフラグ問題が解決したのでコード整理。
元々こういう風に書こうとしていたのをバグチェックのためにぐちゃぐちゃにしてしまっていた。
しかしjrの仕様が仕様書と微妙に違う。ジャンプ先が8バイト先なので+6指定が正しいはずなのだけどずれてしまった。
jr命令から数えて目的番地-2って書いてあるんだけどなぁ。19-11で8だよなぁ。-2で6だよなぁ。わからんけどずれてるのは間違いない。
そんでドヤ顔プログラマー気取りのはココ、マジックナンバー"0xd8c9"。
この数値が何かというと、経験値タイプに左右されず最上位バイトの操作だけでLv99に収まる下位2バイトの値なんです。
それぞれの経験値タイプのLv99~100になるのに必要な経験値の表が以下。

ExpType Lv99 Lv100
80万 0x000BD865 0x000C3500
100万 0x000ECE3B 0x000F4240
105万 0x000FAC1F 0x00102C14
125万 0x001281C9 0x001312D0

意図的なのか偶然なのか、経験値3バイト中の上位バイトは全て増加していて、
中位下位のそれぞれの最大値をとってもレベル100には到達しないようになってるんですね。
経験値タイプによらないレベル99調整の方法を考えてこれに気付いたときはもうこいつ天才だろと思いましたね。(自画自賛3段)
ということで中位下位を固定し上位バイトだけ任意増加させることで柔軟なLv99調整を可能にすると共に、
ついでで性格調整まで出来てしまうお得な2way code!今ならなんとわずか21バイトでのご提供!いやバイト数変わったりしないけどさ。


つことで残すは色違い調整。これも経験値と同じ感じで♂♀選択も可能にできますね。