the cutting room mirror

Super Real Hanafuda: Koi Koi Shimasho 2

This article has a talk page!
view on tcrf.net

This page contains notes for the game Super Real Hanafuda: Koi Koi Shimasho 2.

This is split up by which ROM these fragments were found in. These can be seen at the hex addresses listed below.

'...But what does it mean?'
This game has text or audio that needs to be translated. If you are fluent with this language, please read our translation guidelines and then submit a translation!

u26.bin#

0x60404:

                        002,_G02_Ivt02_03,__G02_Ivt02_03
    __mEsect_Cel    025,_G02_Ivt02_03,__G02_Ivt02_03
    __mEsect_Cel    007,_G02_Ivt02_05,__G02_Ivt02_05
    __mEsect_Cel    007,_G02_Ivt02_04,__G02_Ivt02_04
    __mEsect_Cel    007,_G02_Ivt02_03,__G02_Ivt02_03
    __mEsect_Cel    006,_G02_Ivt02_05,__G02_Ivt02_05
    __mEsect_Cel    035,_G02_Ivt02_03,__G02_Ivt02_03
    __mEsect_Cel    007,_G02_Ivt02_04,__G02_Ivt02_04
    __mEsect_Cel    007,_G02_Ivt02_05,__G02_Ivt02_05
    __mEsect_Cel    007,_G02_Ivt02_04,__G02_Ivt02_04
    __mEsect_Cel    007,_G02_Ivt02_03,__G02_Ivt02_03
    __mEsect_Cel    007,_G02_Ivt02_05,__G02_Ivt02_05
    __mEsect_Cel    007,_G02_Ivt02_04,__G02_Ivt02_04
    __mEsect_Cel    007,_G02_Ivt02_03,__G02_Ivt02_03
    __mEsect_Cel    007,_G02_Ivt02_05,__G02_Ivt02_05
    __mEsect_Cel    007,_G02_Ivt02_04,__G02_Ivt02_04
    __mEsect_Cel    007,_G02_Ivt02_05,__G02_Ivt02_05
    __mEsect_Cel    010,_G02_Ivt02_04,__G02_Ivt02_04
    __mEsect_Cel    $fff,_G02_Ivt02_03,__G02_Ivt02_03
    STOP

tAnm_G02_Ivent21:
    __mEsect_Anm    001,tCel_G02_Ivent21
tCel_G02_Ivent21:
    __mEsect_Cel    032,_G02_Ivt02_06,__G02_Ivt02_06
    __mEsect_Cel    $130/002,_G02_Ivt02_06,__G02_Ivt02_06
    __mEsect_Cel    002,_G02_Ivt02_06,__G02_Ivt02_06
    __mEsect_Cel    002,_G02_Ivt02_07,__G02_Ivt02_07
    __mEsect_Cel    002,_G02_Ivt02_08,__G02_Ivt02_08
    __mEsect_Cel    002,_G02_Ivt02_09,__G02_Ivt02_09
    __mEsect_Cel    $fff,_G02_Ivt02_06,__G02_Ivt02_06
    STOP
;-----------------------------------------------------------------------------
;   イベント3
;-----------------------------------------------------------------------------
tEReqNatumiIvent3_0:
; BG
    __mEsect_Init1  __EsectIventMain            ;実行プログラム名
    __mEsect_Init2  060,_NullData,__NullData        ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  000,000                 ;H、V
    __mEsect_Init4  tMov_G02_Ivnt30,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  060,_G02_IvtBG03_00,__G02_IvtBG03_00    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  000,000                 ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  060,_G02_IvtBG03_01,__G02_IvtBG03_01    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $080,000                ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  060,_G02_IvtBG03_02,__G02_IvtBG03_02    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $100,000                ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  060,_G02_IvtBG03_03,__G02_IvtBG03_03    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $150,000                ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  060,_G02_IvtBG03_04,__G02_IvtBG03_04    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  000,$100                ;H、V
    __mEsect_Init4  1   __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  059,_G02_Ivt03_08,__G02_Ivt03_08    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  000,$200                ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  059,_G02_Ivt03_09,__G02_Ivt03_09    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $080,$200               ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  059,_G02_Ivt03_10,__G02_Ivt03_10    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $100,$200               ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  058,_G02_Ivt03_11,__G02_Ivt03_11    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $120,$190               ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,tAnm_G02_Ivent30    ;移動テーブル先頭アドレス、アニメーションテーブルアドレス
    STOP

tMov_G02_Ivnt30:
    __StopDat   032         ; ワイプが開くまで
    __StopDat   $120/002
    __StopDat   250
    STOP

tMov_G02_Ivnt31:
    __StopDat   032         ; ワイプが開くまで
    __EsectDirDat   $120/002,$08e,$002
    __StopDat   $fff
    STOP

tAnm_G02_Ivent30:
    __mEsect_Anm    001,tCel_G02_Ivent30
tCel_G02_Ivent30:
    __mEsect_Cel    032,_G02_Ivt03_11,__G02_Ivt03_11
    __mEsect_Cel    $120/002,_G02_Ivt03_11,__G02_Ivt03_11
    __mEsect_Cel    030,_G02_Ivt03_11,__G02_Ivt03_11
    __mEsect_Cel    007,_G02_Ivt03_12,__G02_Ivt03_12
    __mEsect_Cel    007,_G02_Ivt03_13,__G02_Ivt03_13
    __mEsect_Cel    007,_G02_Ivt03_12,__G02_Ivt03_12
    __mEsect_Cel    007,_G02_Ivt03_13,__G02_Ivt03_13
    __mEsect_Cel    007,_G02_Ivt03_11,__G02_Ivt03_11
    __mEsect_Cel    007,_G02_Ivt03_12,__G02_Ivt03_12
    __mEsect_Cel    007,_G02_Ivt03_13,__G02_Ivt03_13
    __mEsect_Cel    006,_G02_Ivt03_11,__G02_Ivt03_11
    __mEsect_Cel    002,_G02_Ivt03_12,__G02_Ivt03_12
    __mEsect_Cel    002,_G02_Ivt03_11,__G02_Ivt03_11
    __mEsect_Cel    006,_G02_Ivt03_12,__G02_Ivt03_12
    __mEsect_Cel    006,_G02_Ivt03_13,__G02_Ivt03_13
    __mEsect_Cel    006,_G02_Ivt03_11,__G02_Ivt03_11
    __mEsect_Cel    006,_G02_Ivt03_12,__G02_Ivt03_12
    __mEsect_Cel    006,_G02_Ivt03_13,__G02_Ivt03_13
    __mEsect_Cel    006,_G02_Ivt03_12,__G02_Ivt03_12
    __mEsect_Cel    006,_G02_Ivt03_11,__G02_Ivt03_11
    __mEsect_Cel    008,_G02_Ivt03_13,__G02_Ivt03_13
    __mEsect_Cel    008,_G02_Ivt03_12,__G02_Ivt03_12
    __mEsect_Cel    $fff,_G02_Ivt03_11,__G02_Ivt03_11
    STOP
;-----------------------------------------------------------------------------
        end
�G01_Ivt03_14
    __mEsect_Cel    005,_G01_Ivt03_16,__G01_Ivt03_16
    __mEsect_Cel    005,_G01_Ivt03_15,__G01_Ivt03_15
    __mEsect_Cel    005,_G01_Ivt03_14,__G01_Ivt03_14
    __mEsect_Cel    005,_G01_Ivt03_16,__G01_Ivt03_16
    __mEsect_Cel    007,_G01_Ivt03_15,__G01_Ivt03_15
    __mEsect_Cel    007,_G01_Ivt03_16,__G01_Ivt03_16
    __mEsect_Cel    $fff,_G01_Ivt03_14,__G01_Ivt03_14
    STOP
;-----------------------------------------------------------------------------
        end

0x62001:

ら場札への移動のイニシャライズ
;-----------------------------------------------------------------------------
ini_TB_koi_ply:             ;
    pushm   #r0/r10-r14/r21-r22 ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    movz.bw wbFudaFrmP,r11      ;叩く側(捨てる) 札インデックス
    movz.bw wbFudaForN,r12      ;叩かれ側 札ナンバー
    movz.bw wbFudaForP,r13      ;叩かれ側 札インデックス
    mov.w   #wFuda,r14      ;札ワーク
    test.b  wbFudaMd        ;
    bne get_ini_TB_koi_ply  ;
give_ini_TB_koi_ply:            ;場に捨てる場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
;   mov.w   [r14](r10),r0       ;目標札ワークの先頭
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos1(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos1(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
    br  end_ini_TB_koi_ply  ;
get_ini_TB_koi_ply:         ;札を叩く場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
;   mov.w   [r14](r10),r0       ;目標札ワークの先頭
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos2(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos2(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
end_ini_TB_koi_ply:         ;
    dec.b   wbPlyFudaCnt        ;札枚数を減らす
    mov.b   #$02,wbSysCur       ;カーソルをスリープモードに移行
    inc.b   wbKoiDist       ;
    mov.b   #16,wbFudaMovTim    ;札移動タイマーをセット
    popm    #r0/r10-r14/r21-r22 ;
    rsr             ;
;-----------------------------------------------------------------------------
;   手札から場札への移動
;-----------------------------------------------------------------------------
mov_TB_koi_ply:             ;
    pushm   #r0/r10/r11     ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    mov.w   #wFuda,r11      ;札ワーク
    shl.w   #$05,r0         ;
    add.w   r11,r0          ;
    jsr _fuda_ptp_mov       ;
    dec.b   wbFudaMovTim        ;
    bnz end_mov_TB_koi_ply  ;
next_mov_TB_koi_ply:            ;
    cmp.b   #$ff,wbTtoB_fuda    ;
    bne next_mov_TB_koi_ply_ex  ;

    push    r1          ;
    mov.b   #SE_FHit2,r1        ;ひっくり返す音後半
    jsr __mya_se        ;
    pop r1          ;

    br  next2_mov_TB_koi_ply    ;

next_mov_TB_koi_ply_ex:         ;

    mov.w   #wBa_huda,r0        ;
    movz.bw wbFudaForP,r11      ;
    mov.b   wbTtoB_fuda,[r0](r11)   ;
    mov.b   #$ff,wbTtoB_fuda    ;

    push    r1          ;
    mov.b   #SE_FHit1,r1        ;札を置く
    jsr __mya_se        ;
    pop r1          ;

;   cmp.b   #$ff,wbBtoT_fuda4   ;
;   be  next2_mov_TB_koi_ply    ;
;   mov.w   #wBa_huda,r0        ;
;   movz.bw wbFudaForP,r11      ;
;   mov.b   wbBtoT_fuda4,[r0](r11)  ;
;   mov.b   #$ff,wbBtoT_fuda4   ;

next2_mov_TB_koi_ply:           ;
    inc.b   wbKoiDist       ;
end_mov_TB_koi_ply:         ;
    popm    #r0/r10/r11     ;
    rsr             ;
;-----------------------------------------------------------------------------
;   手札の詰め
;-----------------------------------------------------------------------------
srt_jam_koi_ply:            ;
    jsr _Fuda_Mon_SortP     ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
end_srt_jam_koi_ply:            ;
;   dec.b   wbPlyFudaCnt        ;札枚数を減らす
    mov.b   #$00,wbKoiDist2_tim ;
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
    inc.b   wbKoiDist       ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札を探す(回避も含む)
;-----------------------------------------------------------------------------
src_Ym_koi_ply:             ;
    pushm   #r10/r20        ;
    dec.b   wbActWaitTim        ;ちょっと待った
    bne end_src_Ym_koi_ply  ;

    jsr _Ba_Brk_Cnt     ;ブランクのカウント
    cmp.b   #$01,r20        ;1枚以下なら
    ble ex_src_Ym_koi_ply   ;イカサマする
job_src_Ym_koi_ply:         ;
    jsr _Bahuda_Emp     ;空き場所を探す
    cmp.b   #$ff,r20        ;空きがないよ
    be  ex_src_Ym_koi_ply   ;
    add.b   #$02,wbKoiDist      ;イカサマintは無し
    jsr _Mak_Yamafuda       ;
    mov.b   r20,wbMtoB_fuda     ;めくり札に登録
    movz.bw r20,r10         ;札ナンバー
    mov.w   #$ff,r20        ;予定は未定
    jsr _fuda_req       ;札のリクエスト

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    push    r1          ;
    mov.b   #SE_FRol,r1     ;ひっくり返すときの音
    jsr __mya_se        ;
    pop r1          ;

    br  end_src_Ym_koi_ply  ;
ex_src_Ym_koi_ply:          ;イカサマの準備

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;イカサマしないといけないよ
end_src_Ym_koi_ply:         ;
    popm    #r10/r20        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   イカサマint
;-----------------------------------------------------------------------------
mag_mby_koi_ply:            ;
    pushm   #r16-r17/r20        ;
    mov.w   #$00,r20        ;
    mov.w   #12,r16         ;
loop_mag_mby_koi_ply:           ;
    jsr _Koi_Ark_m00        ;
    test.b  r17         ;
    bnz end_mag_mby_koi_ply ;
    inc.w   r20         ;
    dec.w   r16         ;
    bnz loop_mag_mby_koi_ply    ;
    jsr Reset           ;致命的エラーなのでリセット
end_mag_mby_koi_ply:            ;

    push    r1          ;
    mov.b   #SE_FRol,r1     ;ひっくり返すときの音
    jsr __mya_se        ;
    pop r1          ;

    jsr _Mak_Yamafuda       ;
    mov.b   r20,wbMtoB_fuda     ;めくり札に登録
    movz.bw r20,r10         ;札ナンバー
    mov.w   #$ff,r20        ;予定は未定
    jsr _fuda_req       ;札のリクエスト

    inc.b   wbKoiDist       ;
    popm    #r16-r17/r20        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札のめくり動作
;-----------------------------------------------------------------------------
opn_Ym_koi_ply:             ;
    pushm   #r10-r12        ;

    mov.w   #wFuda,r10      ;
    movz.bw wbMtoB_fuda,r11     ;めくり札
    shl.w   #$05,r11        ;
    add.w   r10,r11         ;目的ワークの先頭
    movz.bw wbKoiDist2_tim,r12  ;
    mov.b   tOpen__Fuda_Rot(r12),_Fuda_dsp[r11] ;
    inc.b   wbKoiDist2_tim      ;
    cmp.b   #10,wbKoiDist2_tim  ;
    bne end_opn_Ym_koi_ply  ;
    inc.b   wbKoiDist       ;

    jsr _init_Hit_Ok        ;

    mov.b   #$00,wbFudaFrmN     ;初期化
    mov.b   #$00,wbFudaFrmP     ;
    mov.b   #$00,wbFudaForN     ;
    mov.b   #$00,wbFudaForP     ;

    mov.b   #$ff,wbTtoB_fuda    ;

end_opn_Ym_koi_ply:         ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    popm    #r10-r12        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   叩ける札を探す(山札:場札)
;-----------------------------------------------------------------------------
src2_hit_koi_ply:           ;叩ける札を探す(山札:場札)
    push    r20         ;
    jsr _Eva2_hit_jd        ;めくり札のヒット評価
    test.b  wbHitCkB        ;
    be  give_src2_hit_koi_ply   ;叩けない
    cmp.b   #$01,wbHitCkB       ;
    be  sig_src2_hit_koi_ply    ;1枚叩ける
    cmp.b   #$02,wbHitCkB       ;
    be  dbl_src2_hit_koi_ply    ;2枚叩ける
    nop             ;場に3枚以上存在する場合は、
    nop             ;とばない様に(すり抜けさせる様に)、
    nop             ;一時的に設定しておく
    nop             ;
give_src2_hit_koi_ply:          ;場に捨てるとき
    mov.b   #$00,wbFudaMd       ;モードの設定
    jsr _Bahuda_Emp     ;空き場所を探す
    mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー

;;  mov.b   wbMtoB_fuda,wbBtoT_fuda1    ;
    mov.b   wbMtoB_fuda,wbTtoB_fuda     ;

    mov.b   #$00,wbFudaFrmP     ;1種類だけだから
    mov.b   #$ff,wbFudaForN     ;エラーを起こさせる
    mov.b   r20,wbFudaForP      ;叩かれ側 札インデックス
    br  end_src2_hit_koi_ply    ;
sig_src2_hit_koi_ply:           ;
    mov.b   #$01,wbFudaMd       ;モードの設定
    mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー
    mov.b   wbMtoB_fuda,wbBtoT_fuda1    ;叩くやつ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   #$00,wbFudaFrmP     ;1種類だけだから
    mov.b   wbHitOkB,wbFudaForN ;叩かれ側 札ナンバー
    mov.b   wbHitOkB,wbBtoT_fuda3   ;起き札に叩かれるヤツ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   wbHitPsB,wbFudaForP ;叩かれ側 札インデックス
    mov.b   wbHitPsB,r20        ;
    jsr _Del_Bafuda     ;場札登録の抹消
    br  end_src2_hit_koi_ply    ;
dbl_src2_hit_koi_ply:           ;
    mov.b   #$02,wbFudaMd       ;モードの設定
    mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー
    mov.b   wbMtoB_fuda,wbBtoT_fuda1    ;叩くヤツ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   #$00,wbFudaFrmP     ;1種類だけだから
end_src2_hit_koi_ply:           ;
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
    mov.b   #$ff,wbMtoB_fuda    ;起き札登録の抹消
    inc.b   wbKoiDist       ;
    pop r20         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   3枚札の選択
;-----------------------------------------------------------------------------
cho2_tre_koi_ply:           ;3枚札の選択
    push    r1          ;
    cmp.b   #$02,wbFudaMd       ;3枚選択モードか?
    bne end_cho2_tre_koi_ply    ;

    mov.b   #$00,wbBaCurPos     ;初期化
    mov.b   #$00,wbBaCurAnm     ;
    mov.b   #$00,wbBaCurBusy    ;
    mov.b   #$00,wbBaCurNum     ;
    mov.b   #$00,wbBaYNPos      ;

    mov.b   wbHitPs,wbBaCurPos  ;

    mov.w   #tEsect_Ba_cur,r1   ;選択セットをリクエスト
    jsr __Esect_Req     ;
    jsr __1PKEY_Init        ;I/O再初期化

    mov.b   #ChoFrzIni,wbFudaMovTim ;選択初期硬直時間の設定

    push    r1          ;
    mov.b   #SE_Msg,r1      ;メッセージウインドウ
    jsr __mya_se        ;
    pop r1          ;

end_cho2_tre_koi_ply:           ;
    inc.b   wbKoiDist       ;
    pop r1          ;
    rsr             ;
;-----------------------------------------------------------------------------
;   3枚札のキー入力待ち
;-----------------------------------------------------------------------------
wat2_tre_koi_ply:           ;3枚札のキー入力待ち
    pushm   #r10/r11/r15        ;
    cmp.b   #$02,wbFudaMd       ;3枚選択モードか?
    be  frz_wat2_tre_koi_ply    ;らしい
;   mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
    inc.b   wbKoiDist       ;ベクタを進める
    br  end_wat2_tre_koi_ply    ;
frz_wat2_tre_koi_ply:           ;
    test.b  wbFudaMovTim        ;
    be  mod_wat2_tre_koi_ply    ;
    dec.b   wbFudaMovTim        ;初期硬直
    mov.w   #$ff,r15        ;ダミー・ニュートラル
    br  ini_wat2_tre_koi_ply    ;
mod_wat2_tre_koi_ply:           ;
    jsr __1PKEY_JD      ;
ini_wat2_tre_koi_ply:           ;
    mov.b   #$00,wbCurBusy2     ;コンフリクト回避用
    mov.b   #$00,r20        ;処理続行中
    jsr _Sys_tim_gen        ;

    movz.bw wbBaCurNum,r10      ;ナンバー+α値取得
    mov.w   #wbHitPsB,r11       ;
    mov.b   [r11](r10),wbBaCurPos   ;ポジションの登録
A_wat2_tre_koi_ply:         ;Aボタンチェック
    test.h  whSysTimDsp     ;キャンセルタイマーチェック
    be  fin_wat2_tre_koi_ply    ;
    test1   #$03,r15        ;
    bne R_wat2_tre_koi_ply  ;
PA_wat2_tre_koi_ply:            ;
    mov.b   #$01,r20        ;タイマーカット
    jsr _Sys_tim_gen        ;

    push    r1          ;
    mov.b   #SE_Dec1,r1     ;決定音
    jsr __mya_se        ;
    pop r1          ;

    test.b  wbBaYNPos       ;Yesを選んだかいな?
    be  fin_wat2_tre_koi_ply    ;
    inc.b   wbBaCurNum      ;Noを選んだらしい
    mov.b   #ChoFrzTim,wbFudaMovTim ;硬直時間の再設定
    mov.b   #$00,wbBaYNPos      ;Yesに合わせ直し
    cmp.b   #$02,wbBaCurNum     ;
    bne end_wat2_tre_koi_ply    ;
    mov.b   #$00,wbBaCurNum     ;
    br  end_wat2_tre_koi_ply    ;
R_wat2_tre_koi_ply:         ;右チェック
    test1   #$04,r15        ;
    bne L_wat2_tre_koi_ply  ;

    push    r1          ;
    mov.b   #SE_Cur1,r1     ;カーソル移動音
    jsr __mya_se        ;
    pop r1          ;

    mov.b   #$01,wbBaYNPos      ;右ループしない
    br  end_wat2_tre_koi_ply    ;
L_wat2_tre_koi_ply:         ;左チェック
    test1   #$05,r15        ;
    bne end_wat2_tre_koi_ply    ;

    push    r1          ;
    mov.b   #SE_Cur1,r1     ;カーソル移動音
    jsr __mya_se        ;
    pop r1          ;

    mov.b   #$00,wbBaYNPos      ;左ループしない
    br  end_wat2_tre_koi_ply    ;
fin_wat2_tre_koi_ply:           ;
    movz.bw wbBaCurNum,r10      ;ナンバー+α値取得
    mov.w   #wbHitOkB,r11       ;場札ヒットワーク(3種)
    mov.b   [r11](r10),wbFudaForN   ;叩かれ側 札ナンバー
    mov.b   [r11](r10),wbBtoT_fuda3 ;
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.w   #wbHitPsB,r11       ;場札ヒットポジション(3種)
    mov.b   [r11](r10),wbFudaForP   ;叩かれ側 札インデックス
    mov.b   [r11](r10),r20      ;
    jsr _Del_Bafuda     ;場札登録の抹消
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
    inc.b   wbKoiDist       ;ベクタを進める
    mov.b   #$01,wbBaCurBusy    ;終了!!
end_wat2_tre_koi_ply:           ;
    popm    #r10/r11/r15        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札から場札への移動のイニシャライズ
;-----------------------------------------------------------------------------
ini_YB_koi_ply:             ;山札から場札への移動のイニシャライズ
    pushm   #r0/r10-r14/r21-r22 ;
    dec.b   wbActWaitTim        ;待つのだ
    bne fin_end_ini_YB_koi_ply  ;
init_ini_YB_koi_ply:            ;

    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    movz.bw wbFudaFrmP,r11      ;叩く側(捨てる) 札インデックス
    movz.bw wbFudaForN,r12      ;叩かれ側 札ナンバー
    movz.bw wbFudaForP,r13      ;叩かれ側 札インデックス
    mov.w   #wFuda,r14      ;札ワーク
    test.b  wbFudaMd        ;
    bne get_ini_YB_koi_ply  ;
give_ini_YB_koi_ply:            ;場に捨てる場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos1(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos1(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
    br  end_ini_YB_koi_ply  ;
get_ini_YB_koi_ply:         ;札を叩く場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos2(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos2(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
end_ini_YB_koi_ply:         ;

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;
    mov.b   #16,wbFudaMovTim    ;札移動タイマーをセット

fin_end_ini_YB_koi_ply:         ;

    popm    #r0/r10-r14/r21-r22 ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札から場札への移動
;-----------------------------------------------------------------------------
mov_YB_koi_ply:             ;
    pushm   #r0/r10/r11     ;
;   jsr Fuda_Esect      ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    mov.w   #wFuda,r11      ;札ワーク
    shl.w   #$05,r0         ;
    add.w   r11,r0          ;
    jsr _fuda_ptp_mov       ;
    dec.b   wbFudaMovTim        ;
    bnz end_mov_YB_koi_ply  ;
next_mov_YB_koi_ply:            ;
    cmp.b   #$ff,wbTtoB_fuda    ;
    bne next_mov_YB_koi_ply_ex  ;

    push    r1          ;
    mov.b   #SE_FHit2,r1        ;ひっくり返す音後半
    jsr __mya_se        ;
    pop r1          ;

    br  next2_mov_YB_koi_ply    ;

next_mov_YB_koi_ply_ex:         ;

    mov.w   #wBa_huda,r0        ;
    movz.bw wbFudaForP,r11      ;
    mov.b   wbTtoB_fuda,[r0](r11)   ;
    mov.b   #$ff,wbTtoB_fuda    ;

    push    r1          ;
    mov.b   #SE_FHit1,r1        ;札を置く
    jsr __mya_se        ;
    pop r1          ;

;   cmp.b   #$ff,wbBtoT_fuda1   ;
;   be  next2_mov_YB_koi_ply    ;
;   mov.w   #wBa_huda,r0        ;
;   movz.bw wbFudaForP,r11      ;
;   mov.b   wbBtoT_fuda1,[r0](r11)  ;
;   mov.b   #$ff,wbBtoT_fuda1   ;

next2_mov_YB_koi_ply:           ;
    inc.b   wbKoiDist       ;
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
end_mov_YB_koi_ply:         ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    popm    #r0/r10/r11     ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札すべての移動のイニシャライズ
;-----------------------------------------------------------------------------
ini_all_koi_ply:            ;取った札すべての移動のイニシャライズ
    pushm   #r1/r10-r14     ;
    dec.b   wbActWaitTim        ;
    bne fin_ini_all_koi_ply ;

    mov.b   #$00,wbFuda1_Tim    ;タイマー初期化
    mov.b   #$00,wbFuda2_Tim    ;
    mov.b   #$00,wbFuda3_Tim    ;
    mov.b   #$00,wbFuda4_Tim    ;

    mov.w   #wbGetFudaP,r10     ;ワーク
    jsr _Fuda_Shar_Cnt      ;カウントしてみる
    jsr _init_GetFuda_PosP  ;ポジションの割り出し

job1_ini_all_koi_ply:           ;
    movz.bw wbBtoT_fuda1,r1     ;
    cmp.w   #$ff,r1         ;
    be  job2_ini_all_koi_ply    ;
    jsr _init_GetFuda_SetP  ;
job2_ini_all_koi_ply:           ;
    movz.bw wbBtoT_fuda2,r1     ;
    cmp.w   #$ff,r1         ;
    be  job3_ini_all_koi_ply    ;
    jsr _init_GetFuda_SetP  ;
job3_ini_all_koi_ply:           ;
    movz.bw wbBtoT_fuda3,r1     ;
    cmp.w   #$ff,r1         ;
    be  job4_ini_all_koi_ply    ;
    jsr _init_GetFuda_SetP  ;
job4_ini_all_koi_ply:           ;
    movz.bw wbBtoT_fuda4,r1     ;
    cmp.w   #$ff,r1         ;
    be  end_ini_all_koi_ply ;
    jsr _init_GetFuda_SetP  ;
end_ini_all_koi_ply:            ;

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;
fin_ini_all_koi_ply:            ;
    popm    #r1/r10-r14     ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札すべての移動
;-----------------------------------------------------------------------------
mov_all_koi_ply:            ;
    pushm   #r0-r3/r10      ;
    mov.w   #wFuda,r1       ;
mov_all_koi_ply_job1:           ;
    movz.bw wbFuda1_Tim,r2      ;
    mov.b   tMov_All_Fuda1(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_ply_job2    ;
    cmp.b   #$ff,wbBtoT_fuda1   ;
    be  mov_all_koi_ply_job2    ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_ply_job1_ex ;

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

mov_all_koi_ply_job1_ex:        ;

    movz.bw wbBtoT_fuda1,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_ply_job2:           ;
    movz.bw wbFuda2_Tim,r2      ;
    mov.b   tMov_All_Fuda2(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_ply_job3    ;
    cmp.b   #$ff,wbBtoT_fuda2   ;
    be  mov_all_koi_ply_job3    ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_ply_job2_ex ;

;   push    r1          ;
;   mov.b   #$52,r1         ;札を切る音
;   jsr __mya_se        ;
;   pop r1          ;

mov_all_koi_ply_job2_ex:        ;

    movz.bw wbBtoT_fuda2,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_ply_job3:           ;
    movz.bw wbFuda3_Tim,r2      ;
    mov.b   tMov_All_Fuda3(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_ply_job4    ;
    cmp.b   #$ff,wbBtoT_fuda3   ;
    be  mov_all_koi_ply_job4    ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_ply_job3_ex

;   push    r1          ;
;   mov.b   #$52,r1         ;札を切る音
;   jsr __mya_se        ;
;   pop r1          ;

mov_all_koi_ply_job3_ex:        ;

    movz.bw wbBtoT_fuda3,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_ply_job4:           ;
    movz.bw wbFuda4_Tim,r2      ;
    mov.b   tMov_All_Fuda4(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_ply_jd1 ;
    cmp.b   #$ff,wbBtoT_fuda4   ;
    be  mov_all_koi_ply_jd1 ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_ply_job4_ex

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

mov_all_koi_ply_job4_ex:

    movz.bw wbBtoT_fuda4,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_ply_jd1:            ;
    movz.bw wbGetIdxP,r2        ;取った札のインデックス
    mov.w   #wbGetFudaP,r3      ;取った札ワーク
    inc.b   wbFuda1_Tim     ;
    cmp.b   #16,wbFuda1_Tim     ;
    bne mov_all_koi_ply_jd2 ;
    cmp.b   #$ff,wbBtoT_fuda1   ;
    be  mov_all_koi_ply_jd2 ;
    mov.b   wbBtoT_fuda1,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda1   ;
    jsr _GetFuda_Shar_SetP  ;
    inc.w   r2          ;
    inc.b   wbGetIdxP       ;
mov_all_koi_ply_jd2:            ;
    inc.b   wbFuda2_Tim     ;
    cmp.b   #20,wbFuda2_Tim     ;
    bne mov_all_koi_ply_jd3 ;
    cmp.b   #$ff,wbBtoT_fuda2   ;
    be  mov_all_koi_ply_jd3 ;
    mov.b   wbBtoT_fuda2,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda2   ;
    jsr _GetFuda_Shar_SetP  ;
    inc.w   r2          ;
    inc.b   wbGetIdxP       ;
mov_all_koi_ply_jd3:            ;
    inc.b   wbFuda3_Tim     ;
    cmp.b   #24,wbFuda3_Tim     ;
    bne mov_all_koi_ply_jd4 ;
    cmp.b   #$ff,wbBtoT_fuda3   ;
    be  mov_all_koi_ply_jd4 ;
    mov.b   wbBtoT_fuda3,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda3   ;
    jsr _GetFuda_Shar_SetP  ;
    inc.w   r2          ;
    inc.b   wbGetIdxP       ;
mov_all_koi_ply_jd4:            ;
    inc.b   wbFuda4_Tim     ;
    cmp.b   #28,wbFuda4_Tim     ;
    bne end_mov_all_koi_ply ;
    cmp.b   #$ff,wbBtoT_fuda4   ;
    be  mov_all_koi_ply_jd_ex   ;
    mov.b   wbBtoT_fuda4,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda4   ;
    jsr _GetFuda_Shar_SetP  ;
    inc.b   wbGetIdxP       ;
mov_all_koi_ply_jd_ex:          ;

;;  jsr waitblk         ;まあ、待てや
;;  jsr waitblk         ;まあ、待てや
;;  jsr waitblk         ;まあ、待てや
;;  jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;
    mov.b   #10,wbActWaitTim    ;ウェイトをかます

end_mov_all_koi_ply:            ;
    popm    #r0-r3/r10      ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札のソート
;-----------------------------------------------------------------------------
srt_pul_koi_ply:            ;
;   pushm   #r15/r16        ;

    dec.b   wbActWaitTim        ;
    bne fin_srt_pul_koi_ply ;

;   mov.w   #wbGetFudaP,r15     ;P取った札のナンバー
;   mov.w   #wbGetIdxP,r16      ;P取った札のインデックス

;   jsr _Get_Fuda_Req       ;移動札を取り札として登録する

    jsr _GetFuda_Sort_SetP  ;
    jsr _GetFuda_Shar_SetP  ;

;   mov.b   #$ff,wbBtoT_fuda1   ;後始末
;   mov.b   #$ff,wbBtoT_fuda2   ;
;   mov.b   #$ff,wbBtoT_fuda3   ;
;   mov.b   #$ff,wbBtoT_fuda4   ;

job_srt_pul_koi_ply:            ;
    jsr _GetFuda_Arg_AgnP   ;

    mov.b   #$ff,wbMtoB_fuda    ;初期化
    mov.b   #$ff,wbTtoB_fuda    ;
    mov.b   #$ff,wbBtoT_fuda1   ;
    mov.b   #$ff,wbBtoT_fuda2   ;
    mov.b   #$ff,wbBtoT_fuda3   ;
    mov.b   #$ff,wbBtoT_fuda4   ;
    mov.b   #$00,wbBtoT_fudaC   ;

end_srt_pul_koi_ply:            ;
    inc.b   wbKoiDist       ;
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
;   popm    #r15/r16        ;

fin_srt_pul_koi_ply:            ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札の評価
;-----------------------------------------------------------------------------
eva_pul_koi_ply:            ;
    pushm   #r15-r20        ;
    dec.b   wbActWaitTim        ;
    bne end_eva_pul_koi_ply ;

    mov.w   #wbGetFudaP,r15     ;取った札ワークアドレス
    mov.w   #wbYakuJdP,r16      ;出来役判定用カウンターワークAD

    jsr _Huda_val       ;取った札の評価

    mov.w   #wbYakuJdP,r15      ;出来役判定用カウンターワーク
    mov.w   #wbYakuJd2P,r16     ;出来役成立用ワーク(総合)
    mov.w   #wbYakuJd3P,r17     ;出来役成立用ワーク(瞬間)
    mov.w   #wbYakuCnt2P,r18    ;各出来役文数カウンター
    mov.w   #wbYakuCntP,r19     ;総文数カウンター(1回での出来役)
    mov.w   #wbYakuRchP,r20     ;出来役リーチ用ワーク

    jsr _Yaku_val       ;出来役の評価

    inc.b   wbKoiDist       ;
end_eva_pul_koi_ply:            ;
    popm    #r15-r20        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   瞬間での出来役演出判定
;-----------------------------------------------------------------------------
ini_dir_mom_koi_ply:            ;瞬間での出来役演出判定
    push    r10         ;
    mov.w   #wbYakuJd3P,r10     ;
    test.w  [r10+]          ;
    bne job_ini_dir_mom_koi_ply ;
    test.w  [r10+]          ;
    bne job_ini_dir_mom_koi_ply ;
    test.w  [r10+]          ;
    bne job_ini_dir_mom_koi_ply ;
    add.b   #$06,wbKoiDist      ;成立してないや
    br  end_ini_dir_mom_koi_ply ;
job_ini_dir_mom_koi_ply:        ;
;   mov.b   #$01,wbDPltCk       ;ウインドウのセット
    mov.b   #$00,wbDPltMode     ;
    mov.b   #$01,wbJdKoiKoi     ;コイコイをきく必要性がある
    jsr _DPlate_Man     ;
    inc.b   wbKoiDist       ;
end_ini_dir_mom_koi_ply:        ;
;   dec.b   wbPlyFudaCnt        ;札枚数を減らす
    pop r10         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   瞬間での出来役演出
;-----------------------------------------------------------------------------
dir_mom_koi_ply:            ;
    jsr _DPlate_Man     ;
    test.b  wbDPltCk        ;
    bne end_dir_mom_koi_ply ;
    inc.b   wbKoiDist       ;

    test.b  wbMainTask      ;
    be  end_dir_mom_koi_ply ;

    test.b  wbUpCnt         ;
    bne end_dir_mom_koi_ply ;

    push    r1          ;
    mov.b   #21,r1          ;こいこい後のアップテンポ
    jsr __mya_bgm       ;
    pop r1          ;

    inc.b   wbUpCnt         ;

end_dir_mom_koi_ply:            ;
    rsr             ;
;-----------------------------------------------------------------------------
;   コイコイする?ウインドウ
;-----------------------------------------------------------------------------
win_ask_koi_ply:            ;
    push    r25         ;
    test.b  wbJdKoiKoi      ;
    be  next_win_ask_koi_ply    ;
    test.b  wbPlyFudaCnt        ;
    be  next_win_ask_koi_ply    ;

    mov.b   #$02,wbKoiWindowAction  ;こいこいする?
    jsr Koi_Window      ;
    test.b  r25         ;
    bne end_win_ask_koi_ply ;

next_win_ask_koi_ply:           ;
    inc.b   wbKoiDist       ;
end_win_ask_koi_ply:            ;
    pop r25         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   コイコイの選択
;-----------------------------------------------------------------------------
cho_koi_koi_ply:            ;
    push    r1          ;
    test.b  wbJdKoiKoi      ;
    be  next_cho_koi_koi_ply    ;
    test.b  wbPlyFudaCnt        ;
    be  next_cho_koi_koi_ply    ;

    mov.b   #$00,wbBaCurBusy    ;
    mov.b   #$00,wbBaYNPos      ;

    test.b  wbDipCntrol     ;コンパネ判定
    bne job_cho_koi_koi_ply_KB  ;
job_cho_koi_koi_ply_JS:         ;
    mov.w   #tEsect_Koi_Ok,r1   ;選択セットをリクエスト
    jsr __Esect_Req     ;
    jsr __1PKEY_Init        ;I/O再初期化
    br  job_cho_koi_koi_ply_ex  ;
job_cho_koi_koi_ply_KB:         ;
    mov.w   #tEsect_Koi_Ok2,r1  ;選択セットをリクエスト
    jsr __Esect_Req     ;
job_cho_koi_koi_ply_ex:         ;

    mov.b   #ChoFrzIni,wbFudaMovTim ;選択初期硬直時間の設定
    mov.b   #$02,wbSysCur       ;カーソルをスリープモードに移行

    push    r1          ;
    mov.b   #SE_Msg,r1      ;メッセージウインドウ
    jsr __mya_se        ;
    pop r1          ;

next_cho_koi_koi_ply:           ;
    inc.b   wbKoiDist       ;
end_cho_koi_koi_ply:            ;
    pop r1          ;
    rsr             ;
;-----------------------------------------------------------------------------
;   コイコイのキー入力待ち
;-----------------------------------------------------------------------------
wat_koi_koi_ply:            ;
    push    r15         ;

    mov.b   #$00,wbCurBusy2     ;コンフリクト回避用
    mov.b   #$00,r20        ;処理続行中
    jsr _Sys_tim_gen        ;

    inc.b   wbRandEx1       ;うりゃー、まわせー

    test.b  wbJdKoiKoi      ;
    be  next_wat_koi_koi_ply    ;

    test.b  wbPlyFudaCnt        ;0枚?
    bne ex_wat_koi_koi_ply  ;

    mov.b   #$01,r20        ;タイマーカット
    jsr _Sys_tim_gen        ;

    mov.b   #$00,wbJdKoiKoi     ;
    mov.b   #$01,wbJdKoiEnd     ;
    inc.b   wbKoiDist       ;
    br  next_wat_koi_koi_ply    ;

ex_wat_koi_koi_ply:         ;
    test.b  wbFudaMovTim        ;
    be  job_wat_koi_koi_ply ;
    dec.b   wbFudaMovTim        ;
    mov.b   #$ff,r15        ;
    br  end_wat_koi_koi_ply ;
job_wat_koi_koi_ply:            ;
    test.b  wbDipCntrol     ;コンパネ判定
    bne job_wat_koi_koi_ply_KB  ;
job_wat_koi_koi_ply_JS:         ;
    jsr __1PKEY_JD      ;
    br  A_job_wat_koi_koi_ply   ;
job_wat_koi_koi_ply_KB:         ;
    mov.b   #$ff,r15        ;回避手段
    jsr __KBKEY_JD      ;
    mov.b   #$01,wbBaCurBusy    ;
    mov.b   #$00,wbBaYNPos      ;Y
    cmp.b   #$01,JOY1PKEY       ;
    be  A_job_wat_koi_koi_ply_ex    ;
    mov.b   #$01,wbBaYNPos      ;N
    cmp.b   #14,JOY1PKEY        ;
    be  A_job_wat_koi_koi_ply_ex    ;
    mov.b   #$00,wbBaCurBusy    ;
A_job_wat_koi_koi_ply:          ;
;   mov.b   #$00,wbCurBusy2     ;コンフリクト回避用
;   mov.b   #$00,r20        ;処理続行中
;   jsr _Sys_tim_gen        ;

    test.h  whSysTimDsp     ;キャンセルタイマーチェック
    bne A_job_wat_koi_koi_ply_Ex    ;

    test.b  wbBaYNPos       ;
    be  AY_job_wat_koi_koi_ply  ;
    br  AN_job_wat_koi_koi_ply  ;

;   be  AN_job_wat_koi_koi_ply  ;タイマー切れの場合はNOにする

A_job_wat_koi_koi_ply_Ex:       ;

    test1   #$03,r15        ;
    bne R_job_wat_koi_koi_ply   ;

A_job_wat_koi_koi_ply_ex:       ;

    push    r1          ;
    mov.b   #SE_Dec1,r1     ;決定音
    jsr __mya_se        ;
    pop r1          ;

    test.b  wbBaYNPos       ;
    bne AN_job_wat_koi_koi_ply  ;
AY_job_wat_koi_koi_ply:         ;
    mov.b   #$00,wbJdKoiEnd     ;
    br  AX_job_wat_koi_koi_ply  ;
AN_job_wat_koi_koi_ply:         ;
    mov.b   #$00,wbJdKoiKoi     ;
    mov.b   #$01,wbJdKoiEnd     ;
    inc.b   wbKoiDist       ;
AX_job_wat_koi_koi_ply:         ;
    mov.b   #$01,r20        ;タイマーカット
    jsr _Sys_tim_gen        ;

    mov.b   #$00,wbBaYNPos      ;
    mov.b   #$01,wbBaCurBusy    ;
    br  next_wat_koi_koi_ply    ;
R_job_wat_koi_koi_ply:          ;
    test1   #$04,r15        ;
    bne L_job_wat_koi_koi_ply   ;

    test.b  wbBaYNPos       ;
    bne end_wat_koi_koi_ply ;

    push    r1          ;
    mov.b   #SE_Cur1,r1     ;カーソル移動音
    jsr __mya_se        ;
    pop r1          ;

    mov.b   #$01,wbBaYNPos      ;
    br  end_wat_koi_koi_ply ;
L_job_wat_koi_koi_ply:          ;
    test1   #$05,r15        ;
    bne end_wat_koi_koi_ply ;

    test.b  wbBaYNPos       ;
    be  end_wat_koi_koi_ply ;

    push    r1          ;
    mov.b   #SE_Cur1,r1     ;カーソル移動音
    jsr __mya_se        ;
    pop r1          ;

    mov.b   #$00,wbBaYNPos      ;
    br  end_wat_koi_koi_ply ;
next_wat_koi_koi_ply:           ;
    inc.b   wbKoiDist       ;
end_wat_koi_koi_ply:            ;
    pop r15         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   コイコイしてくれたウインドウ
;-----------------------------------------------------------------------------
win_koi_koi_ply:            ;
    push    r25         ;
    test.b  wbJdKoiKoi      ;
    be  next_win_koi_koi_ply    ;

    mov.b   #$03,wbKoiWindowAction  ;コイコイしてくれてアリガト
    jsr Koi_Window      ;
    test.b  r25         ;
    bne end_win_koi_koi_ply ;

next_win_koi_koi_ply:           ;
;   mov.b   #$01,wbSysCur       ;カーソル解放
    mov.b   #$00,wbJdKoiKoi     ;
    inc.b   wbKoiDist       ;
    inc.b   wbKoiDist       ;
end_win_koi_koi_ply:            ;
    pop r25         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   勝ち負けウインドウ
;-----------------------------------------------------------------------------
win_res_koi_ply:            ;
    push    r25         ;
    test.b  wbJdKoiEnd      ;
    be  next_win_res_koi_ply    ;

    mov.b   #$01,wbRikoSysCk    ;リコ・システムOFF

    mov.b   #$05,wbKoiWindowAction  ;勝ったよぉ
    jsr Koi_Window      ;
    test.b  r25         ;
    bne end_win_res_koi_ply ;

;   mov.b   #$01,wbSysCur       ;カーソル解放
    mov.b   #$00,wbJdKoiEnd     ;

;   mov.b   #$01,wbSPltCk       ;
    mov.b   #$00,wbDPltMode     ;

    mov.b   #24,wbKoiTask       ;集計処理へ
    mov.b   #$00,wbKoiDist      ;
    br  end_win_res_koi_ply ;
next_win_res_koi_ply:           ;
    inc.b   wbKoiDist       ;
end_win_res_koi_ply:            ;
    pop r25         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   後処理
;-----------------------------------------------------------------------------
next_koi_ply:               ;



end_next_koi_ply:           ;
    mov.b   #$00,wbKoiDist      ;
    inc.b   wbKoiTask       ;上位タスクも進める
    rsr             ;
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;   CPUの順番
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
tkoi_cpu_sec:               ;

    dw  init_koi_cpu        ;初期イニシャライズ
    dw  win_str_koi_cpu     ;スタートウインドウ
    dw  src_hit_koi_cpu     ;叩ける札を探す
    dw  ini_TB_koi_cpu      ;手札から場札への移動のイニシャライズ
    dw  mov_TB_koi_cpu      ;手札から場札への移動
    dw  srt_jam_koi_cpu     ;手札の詰め
    dw  src_Ym_koi_cpu      ;山札を探す(回避も含む)
    dw  mag_mby_koi_cpu     ;イカサマint
    dw  opn_Ym_koi_cpu      ;山札のめくり動作
    dw  src2_hit_koi_cpu    ;叩ける札を探す(山札:場札)
    dw  ini_YB_koi_cpu      ;山札から場札への移動のイニシャライズ
    dw  mov_YB_koi_cpu      ;山札から場札への移動
    dw  ini_all_koi_cpu     ;取った札すべての移動のイニシャライズ
    dw  mov_all_koi_cpu     ;取った札すべての移動
    dw  srt_pul_koi_cpu     ;取った札のソート
    dw  eva_pul_koi_cpu     ;取った札の評価
    dw  ini_dir_mom_koi_cpu ;瞬間での出来役演出判定
    dw  dir_mom_koi_cpu     ;瞬間での出来役演出
;   dw  win_ask_koi_cpu     ;コイコイする?ウインドウ
    dw  cho_koi_koi_cpu     ;コイコイの選択
;   dw  wat_koi_koi_cpu     ;コイコイのキー入力待ち
    dw  win_koi_koi_cpu     ;コイコイしてくれたウインドウ
    dw  win_res_koi_cpu     ;勝ち負けウインドウ
    dw  next_koi_cpu        ;後処理

;-----------------------------------------------------------------------------
koi_cpu_sec:                ;CPUセクション
    push    r10         ;
    movz.bw wbKoiDist,r10       ;
    mov.w   tkoi_cpu_sec(r10),r10   ;
    jsr [r10]           ;
    jsr Fuda_Pri_Man        ;
    jsr Fuda_Esect      ;
    pop r10         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   初期イニシャライズ
;-----------------------------------------------------------------------------
init_koi_cpu:               ;

;   jsr _init_Get_Fuda      ;「取った札」用ワークの初期化
;   jsr _Yaku_val_init      ;出来役評価用ワークの初期化

    mov.b   #$00,wbJdKoiKoi     ;
    mov.b   #$00,wbJdKoiEnd     ;

    inc.b   wbKoiDist       ;
    rsr             ;
;-----------------------------------------------------------------------------
;   スタートウインドウ
;-----------------------------------------------------------------------------
win_str_koi_cpu:            ;
    push    r25         ;
    cmp.b   #$08,wbCpuFudaCnt   ;初回判定
    bne next_win_str_koi_cpu    ;

    test1   #$00,wbKoiOrd       ;
    be  next_win_str_koi_cpu    ;

    mov.b   #$01,wbKoiWindowAction  ;スタートウインドウ
    jsr Koi_Window      ;
    test.b  r25         ;
    bne end_win_str_koi_cpu ;

next_win_str_koi_cpu:           ;
    inc.b   wbKoiDist       ;
end_win_str_koi_cpu:            ;
    pop r25         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   叩ける札を探す
;-----------------------------------------------------------------------------
src_hit_koi_cpu:            ;
    pushm   #r10/r15-r18/r20    ;

    mov.w   #wCpu_Tehuda,r10    ;

    jsr _init_Hit_Ok        ;札ヒットワークの初期化

    mov.b   #$00,wbFudaFrmN     ;初期化
    mov.b   #$00,wbFudaFrmP     ;
    mov.b   #$00,wbFudaForN     ;
    mov.b   #$00,wbFudaForP     ;

    mov.b   #$ff,wbMtoB_fuda    ;初期化
    mov.b   #$ff,wbTtoB_fuda    ;
    mov.b   #$ff,wbBtoT_fuda1   ;
    mov.b   #$ff,wbBtoT_fuda2   ;
    mov.b   #$ff,wbBtoT_fuda3   ;
    mov.b   #$ff,wbBtoT_fuda4   ;
    mov.b   #$00,wbBtoT_fudaC   ;

    mov.w   #$00,wBrankFuda     ;初期化
    mov.w   #$00,wBrankFuda+$04 ;
    mov.w   #$00,wBrankFuda+$08 ;

    mov.b   #$00,wbFudaMd       ;モードセット

    cmp.b   #07,wbGameLv        ;Lv.8で思考切り替え
    bh  src_hit_koi_cpu2    ;
src_hit_koi_cpu1:           ;
    jsr _Koi_Ai_m00     ;ノーマル思考
    br  src_hit_koi_cpu3    ;
src_hit_koi_cpu2:           ;
    jsr _Koi_Ai_m01     ;指向性思考
src_hit_koi_cpu3:           ;
    test.b  wbAiHmax        ;
    bne sig_src_hit_koi_cpu ;
give_src_hit_koi_cpu:           ;
    mov.b   r15,wbFudaFrmN      ;叩く側(捨てる) 札ナンバー
    mov.b   r15,wbTtoB_fuda     ;移動札としての登録
    mov.b   #$ff,[r10](r17)     ;手札内からの登録抹消
    movt.wb r17,wbFudaFrmP      ;叩く側(捨てる) 札インデックス
    mov.b   #$ff,wbFudaForN     ;エラーを起こさせる
    jsr _Bahuda_Emp     ;場札の空き場所を探す
    mov.b   r20,wbFudaForP      ;叩く側(捨てる) 札インデックス
    br  end_src_hit_koi_cpu ;
sig_src_hit_koi_cpu:            ;
    mov.b   #$01,wbFudaMd       ;モードの設定
    mov.b   r15,wbFudaFrmN      ;叩く側(捨てる) 札ナンバー
    mov.b   r15,wbBtoT_fuda2    ;手札移動登録
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   #$ff,[r10](r17)     ;手札内からの登録抹消
    movt.wb r17,wbFudaFrmP      ;叩く側(捨てる) 札インデックス
    mov.b   r16,wbFudaForN      ;叩かれ側 札ナンバー
    mov.b   r16,wbBtoT_fuda4    ;手札に叩かれ移動登録
    inc.b   wbBtoT_fudaC        ;カウントする
    movt.wb r18,wbFudaForP      ;叩かれ側 札インデックス
    movt.wb r18,r20         ;
    jsr _Del_Bafuda     ;場札登録の抹消
end_src_hit_koi_cpu:            ;
    inc.b   wbKoiDist       ;
    popm    #r10/r15-r18/r20    ;
    rsr             ;
;-----------------------------------------------------------------------------
;   手札から場札への移動のイニシャライズ
;-----------------------------------------------------------------------------
ini_TB_koi_cpu:             ;
    pushm   #r0/r10-r14/r21-r22 ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー

    mov.w   #wFuda,r11      ;
    mov.w   r0,r12          ;札を表に開く
    shl.w   #$05,r12        ;
    add.w   r11,r12         ;
    mov.b   #$04,_Fuda_dsp[r12] ;

    movz.bw wbFudaFrmP,r11      ;叩く側(捨てる) 札インデックス
    movz.bw wbFudaForN,r12      ;叩かれ側 札ナンバー
    movz.bw wbFudaForP,r13      ;叩かれ側 札インデックス
    mov.w   #wFuda,r14      ;札ワーク
    test.b  wbFudaMd        ;
    bne get_ini_TB_koi_cpu  ;
give_ini_TB_koi_cpu:            ;場に捨てる場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos1(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos1(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
    br  end_ini_TB_koi_cpu  ;
get_ini_TB_koi_cpu:         ;札を叩く場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos2(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos2(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
end_ini_TB_koi_cpu:         ;
    inc.b   wbKoiDist       ;
    mov.b   #16,wbFudaMovTim    ;札移動タイマーをセット

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

    popm    #r0/r10-r14/r21-r22 ;
    rsr             ;
;-----------------------------------------------------------------------------
;   手札から場札への移動
;-----------------------------------------------------------------------------
mov_TB_koi_cpu:             ;
    pushm   #r0/r10/r11     ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    mov.w   #wFuda,r11      ;札ワーク
    shl.w   #$05,r0         ;
    add.w   r11,r0          ;
    jsr _fuda_ptp_mov       ;
    dec.b   wbFudaMovTim        ;
    bnz end_mov_TB_koi_cpu  ;
next_mov_TB_koi_cpu:            ;
    cmp.b   #$ff,wbTtoB_fuda    ;
    bne next_mov_TB_koi_cpu_ex  ;

    push    r1          ;
    mov.b   #SE_FHit2,r1        ;ひっくり返す音後半
    jsr __mya_se        ;
    pop r1          ;

    br  next2_mov_TB_koi_cpu    ;

next_mov_TB_koi_cpu_ex:         ;

    push    r1          ;
    mov.b   #SE_FHit1,r1        ;札を置く
    jsr __mya_se        ;
    pop r1          ;

    mov.w   #wBa_huda,r0        ;
    movz.bw wbFudaForP,r11      ;
    mov.b   wbTtoB_fuda,[r0](r11)   ;
    mov.b   #$ff,wbTtoB_fuda    ;

next2_mov_TB_koi_cpu:           ;

    inc.b   wbKoiDist       ;
end_mov_TB_koi_cpu:         ;
    popm    #r0/r10/r11     ;
    rsr             ;
;-----------------------------------------------------------------------------
;   手札の詰め
;-----------------------------------------------------------------------------
srt_jam_koi_cpu:            ;
    jsr _Fuda_Mon_SortC     ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
end_srt_jam_koi_cpu:            ;
    mov.b   #$00,wbKoiDist2_tim ;
    add.h   #26,whGetFudaBMaxC  ;役札のMAXが増える

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
    inc.b   wbKoiDist       ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札を探す(回避も含む)
;-----------------------------------------------------------------------------
src_Ym_koi_cpu:             ;
    pushm   #r10/r20        ;
    dec.b   wbActWaitTim        ;
    bne end_src_Ym_koi_cpu  ;
    jsr _Ba_Brk_Cnt     ;ブランクのカウント
    cmp.b   #$01,r20        ;1枚以下なら
    ble ex_src_Ym_koi_cpu   ;イカサマする
job_src_Ym_koi_cpu:         ;
    jsr _Bahuda_Emp     ;空き場所を探す
    cmp.b   #$ff,r20        ;空きがないよ
    be  ex_src_Ym_koi_cpu   ;
    add.b   #$02,wbKoiDist      ;イカサマintは無し
    jsr _Mak_Yamafuda       ;
    mov.b   r20,wbMtoB_fuda     ;めくり札に登録
    movz.bw r20,r10         ;札ナンバー
    mov.w   #$ff,r20        ;予定は未定
    jsr _fuda_req       ;札のリクエスト

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    push    r1          ;
    mov.b   #SE_FRol,r1     ;ひっくり返すときの音
    jsr __mya_se        ;
    pop r1          ;

    br  end_src_Ym_koi_cpu  ;
ex_src_Ym_koi_cpu:          ;イカサマの準備

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;イカサマしないといけないよ
end_src_Ym_koi_cpu:         ;
    popm    #r10/r20        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   イカサマint
;-----------------------------------------------------------------------------
mag_mby_koi_cpu:            ;
    pushm   #r16-r17/r20        ;
    mov.w   #$00,r20        ;
    mov.w   #12,r16         ;
loop_mag_mby_koi_cpu:           ;
    jsr _Koi_Ark_m00        ;
    test.b  r17         ;
    bnz end_mag_mby_koi_cpu ;
    inc.w   r20         ;
    dec.w   r16         ;
    bnz loop_mag_mby_koi_cpu    ;
    jsr Reset           ;致命的エラーなのでリセット
end_mag_mby_koi_cpu:            ;

    push    r1          ;
    mov.b   #SE_FRol,r1     ;ひっくり返すときの音
    jsr __mya_se        ;
    pop r1          ;

    jsr _Mak_Yamafuda       ;
    mov.b   r20,wbMtoB_fuda     ;めくり札に登録
    movz.bw r20,r10         ;札ナンバー
    mov.w   #$ff,r20        ;予定は未定
    jsr _fuda_req       ;札のリクエスト

    inc.b   wbKoiDist       ;
    popm    #r16-r17/r20        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札のめくり動作
;-----------------------------------------------------------------------------
opn_Ym_koi_cpu:             ;
    pushm   #r10-r12        ;

    mov.w   #wFuda,r10      ;
    movz.bw wbMtoB_fuda,r11     ;めくり札
    shl.w   #$05,r11        ;
    add.w   r10,r11         ;目的ワークの先頭
    movz.bw wbKoiDist2_tim,r12  ;
    mov.b   tOpen__Fuda_Rot(r12),_Fuda_dsp[r11] ;
    inc.b   wbKoiDist2_tim      ;
    cmp.b   #10,wbKoiDist2_tim  ;
    bne end_opn_Ym_koi_cpu  ;
    inc.b   wbKoiDist       ;

    jsr _init_Hit_Ok        ;

    mov.b   #$00,wbFudaFrmN     ;初期化
    mov.b   #$00,wbFudaFrmP     ;
    mov.b   #$00,wbFudaForN     ;
    mov.b   #$00,wbFudaForP     ;

    mov.b   #$ff,wbTtoB_fuda    ;

end_opn_Ym_koi_cpu:         ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    popm    #r10-r12        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   叩ける札を探す(山札:場札)
;-----------------------------------------------------------------------------
src2_hit_koi_cpu:           ;叩ける札を探す(山札:場札)
    push    r20         ;
    jsr _Eva2_hit_jd        ;めくり札のヒット評価
    test.b  wbHitCkB        ;
    be  give_src2_hit_koi_cpu   ;叩けない
    cmp.b   #$01,wbHitCkB       ;
    be  sig_src2_hit_koi_cpu    ;1枚叩ける
    cmp.b   #$02,wbHitCkB       ;
    be  dbl_src2_hit_koi_cpu    ;2枚叩ける
    nop             ;場に3枚以上存在する場合は、
    nop             ;とばない様に(すり抜けさせる様に)、
    nop             ;一時的に設定しておく
    nop             ;
give_src2_hit_koi_cpu:          ;場に捨てるとき
    mov.b   #$00,wbFudaMd       ;モードの設定
    jsr _Bahuda_Emp     ;空き場所を探す
    mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー

    mov.b   wbMtoB_fuda,wbTtoB_fuda     ;

    mov.b   #$00,wbFudaFrmP     ;1種類だけだから
    mov.b   #$ff,wbFudaForN     ;エラーを起こさせる
    mov.b   r20,wbFudaForP      ;叩かれ側 札インデックス
    br  end_src2_hit_koi_cpu    ;
sig_src2_hit_koi_cpu:           ;
    mov.b   #$01,wbFudaMd       ;モードの設定
    mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー
    mov.b   wbMtoB_fuda,wbBtoT_fuda1    ;叩くやつ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   #$00,wbFudaFrmP     ;1種類だけだから
    mov.b   wbHitOkB,wbFudaForN ;叩かれ側 札ナンバー
    mov.b   wbHitOkB,wbBtoT_fuda3   ;起き札に叩かれるヤツ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   wbHitPsB,wbFudaForP ;叩かれ側 札インデックス
    mov.b   wbHitPsB,r20        ;
    jsr _Del_Bafuda     ;場札登録の抹消
    br  end_src2_hit_koi_cpu    ;
dbl_src2_hit_koi_cpu:           ;
    mov.b   #$02,wbFudaMd       ;モードの設定
;   mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー
;   mov.b   wbMtoB_fuda,wbBtoT_fuda1    ;叩くヤツ
;   inc.b   wbBtoT_fudaC        ;カウントする
;   mov.b   #$00,wbFudaFrmP     ;1種類だけだから

    mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー
    mov.b   wbMtoB_fuda,wbBtoT_fuda1    ;叩くやつ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   #$00,wbFudaFrmP     ;1種類だけだから
    mov.b   wbHitOkB,wbFudaForN ;叩かれ側 札ナンバー
    mov.b   wbHitOkB,wbBtoT_fuda3   ;起き札に叩かれるヤツ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   wbHitPsB,wbFudaForP ;叩かれ側 札インデックス
    mov.b   wbHitPsB,r20        ;
    jsr _Del_Bafuda     ;場札登録の抹消

end_src2_hit_koi_cpu:           ;
    mov.b   #$ff,wbMtoB_fuda    ;起き札登録の抹消
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
    inc.b   wbKoiDist       ;
    pop r20         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札から場札への移動のイニシャライズ
;-----------------------------------------------------------------------------
ini_YB_koi_cpu:             ;山札から場札への移動のイニシャライズ
    pushm   #r0/r10-r14/r21-r22 ;
    dec.b   wbActWaitTim        ;
    bne fin_ini_YB_koi_cpu  ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    movz.bw wbFudaFrmP,r11      ;叩く側(捨てる) 札インデックス
    movz.bw wbFudaForN,r12      ;叩かれ側 札ナンバー
    movz.bw wbFudaForP,r13      ;叩かれ側 札インデックス
    mov.w   #wFuda,r14      ;札ワーク
    test.b  wbFudaMd        ;
    bne get_ini_YB_koi_cpu  ;
give_ini_YB_koi_cpu:            ;場に捨てる場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos1(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos1(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
    br  end_ini_YB_koi_cpu  ;
get_ini_YB_koi_cpu:         ;札を叩く場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos2(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos2(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
end_ini_YB_koi_cpu:         ;

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;
    mov.b   #16,wbFudaMovTim    ;札移動タイマーをセット
fin_ini_YB_koi_cpu:         ;
    popm    #r0/r10-r14/r21-r22 ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札から場札への移動
;-----------------------------------------------------------------------------
mov_YB_koi_cpu:             ;
    pushm   #r0/r10/r11     ;
;   jsr Fuda_Esect      ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    mov.w   #wFuda,r11      ;札ワーク
    shl.w   #$05,r0         ;
    add.w   r11,r0          ;
    jsr _fuda_ptp_mov       ;
    dec.b   wbFudaMovTim        ;
    bnz end_mov_YB_koi_cpu  ;
next_mov_YB_koi_cpu:            ;
    cmp.b   #$ff,wbTtoB_fuda    ;
    bne next_mov_YB_koi_cpu_ex  ;

    push    r1          ;
    mov.b   #SE_FHit2,r1        ;ひっくり返す音後半
    jsr __mya_se        ;
    pop r1          ;

    br  next2_mov_YB_koi_cpu    ;

next_mov_YB_koi_cpu_ex:         ;

    push    r1          ;
    mov.b   #SE_FHit1,r1        ;札を置く
    jsr __mya_se        ;
    pop r1          ;

    mov.w   #wBa_huda,r0        ;
    movz.bw wbFudaForP,r11      ;
    mov.b   wbTtoB_fuda,[r0](r11)   ;
    mov.b   #$ff,wbTtoB_fuda    ;

next2_mov_YB_koi_cpu:           ;
    inc.b   wbKoiDist       ;
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
end_mov_YB_koi_cpu:         ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    popm    #r0/r10/r11     ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札すべての移動のイニシャライズ
;-----------------------------------------------------------------------------
ini_all_koi_cpu:            ;取った札すべての移動のイニシャライズ
    pushm   #r0/r10-r16/r21-r22 ;

    dec.b   wbActWaitTim        ;
    bne fin_ini_all_koi_cpu ;

    mov.b   #$00,wbFuda1_Tim    ;タイマー初期化
    mov.b   #$00,wbFuda2_Tim    ;
    mov.b   #$00,wbFuda3_Tim    ;
    mov.b   #$00,wbFuda4_Tim    ;

    mov.w   #wbGetFudaC,r10     ;ワーク
    jsr _Fuda_Shar_Cnt      ;カウントしてみる
    jsr _init_GetFuda_PosC  ;ポジションの割り出し

job1_ini_all_koi_cpu:           ;
    movz.bw wbBtoT_fuda1,r1     ;
    cmp.w   #$ff,r1         ;
    be  job2_ini_all_koi_cpu    ;
    jsr _init_GetFuda_SetC  ;
job2_ini_all_koi_cpu:           ;
    movz.bw wbBtoT_fuda2,r1     ;
    cmp.w   #$ff,r1         ;
    be  job3_ini_all_koi_cpu    ;
    jsr _init_GetFuda_SetC  ;
job3_ini_all_koi_cpu:           ;
    movz.bw wbBtoT_fuda3,r1     ;
    cmp.w   #$ff,r1         ;
    be  job4_ini_all_koi_cpu    ;
    jsr _init_GetFuda_SetC  ;
job4_ini_all_koi_cpu:           ;
    movz.bw wbBtoT_fuda4,r1     ;
    cmp.w   #$ff,r1         ;
    be  end_ini_all_koi_cpu ;
    jsr _init_GetFuda_SetC  ;

end_ini_all_koi_cpu:            ;

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;
fin_ini_all_koi_cpu:            ;
    popm    #r0/r10-r16/r21-r22 ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札すべての移動
;-----------------------------------------------------------------------------
mov_all_koi_cpu:            ;
    pushm   #r0-r3/r10      ;
    mov.w   #wFuda,r1       ;
mov_all_koi_cpu_job1:           ;
    movz.bw wbFuda1_Tim,r2      ;
    mov.b   tMov_All_Fuda1(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_cpu_job2    ;
    cmp.b   #$ff,wbBtoT_fuda1   ;
    be  mov_all_koi_cpu_job2    ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_cpu_job1_ex

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

mov_all_koi_cpu_job1_ex:

    movz.bw wbBtoT_fuda1,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_cpu_job2:           ;
    movz.bw wbFuda2_Tim,r2      ;
    mov.b   tMov_All_Fuda2(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_cpu_job3    ;
    cmp.b   #$ff,wbBtoT_fuda2   ;
    be  mov_all_koi_cpu_job3    ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_cpu_job2_ex

;   push    r1          ;
;   mov.b   #$52,r1         ;札を切る音
;   jsr __mya_se        ;
;   pop r1          ;

mov_all_koi_cpu_job2_ex:

    movz.bw wbBtoT_fuda2,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_cpu_job3:           ;
    movz.bw wbFuda3_Tim,r2      ;
    mov.b   tMov_All_Fuda3(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_cpu_job4    ;
    cmp.b   #$ff,wbBtoT_fuda3   ;
    be  mov_all_koi_cpu_job4    ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_cpu_job3_ex

;   push    r1          ;
;   mov.b   #$52,r1         ;札を切る音
;   jsr __mya_se        ;
;   pop r1          ;

mov_all_koi_cpu_job3_ex:

    movz.bw wbBtoT_fuda3,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_cpu_job4:           ;
    movz.bw wbFuda4_Tim,r2      ;
    mov.b   tMov_All_Fuda4(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_cpu_jd1 ;
    cmp.b   #$ff,wbBtoT_fuda4   ;
    be  mov_all_koi_cpu_jd1 ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_cpu_job4_ex

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

mov_all_koi_cpu_job4_ex:

    movz.bw wbBtoT_fuda4,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_cpu_jd1:            ;
    movz.bw wbGetIdxC,r2        ;取った札のインデックス
    mov.w   #wbGetFudaC,r3      ;取った札ワーク
    inc.b   wbFuda1_Tim     ;
    cmp.b   #16,wbFuda1_Tim     ;
    bne mov_all_koi_cpu_jd2 ;
    cmp.b   #$ff,wbBtoT_fuda1   ;
    be  mov_all_koi_cpu_jd2 ;
    mov.b   wbBtoT_fuda1,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda1   ;
;   jsr _GetFuda_Shar_SetC  ;
    inc.w   r2          ;
    inc.b   wbGetIdxC       ;
mov_all_koi_cpu_jd2:            ;
    inc.b   wbFuda2_Tim     ;
    cmp.b   #20,wbFuda2_Tim     ;
    bne mov_all_koi_cpu_jd3 ;
    cmp.b   #$ff,wbBtoT_fuda2   ;
    be  mov_all_koi_cpu_jd3 ;
    mov.b   wbBtoT_fuda2,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda2   ;
;   jsr _GetFuda_Shar_SetC  ;
    inc.w   r2          ;
    inc.b   wbGetIdxC       ;
mov_all_koi_cpu_jd3:            ;
    inc.b   wbFuda3_Tim     ;
    cmp.b   #24,wbFuda3_Tim     ;
    bne mov_all_koi_cpu_jd4 ;
    cmp.b   #$ff,wbBtoT_fuda3   ;
    be  mov_all_koi_cpu_jd4 ;
    mov.b   wbBtoT_fuda3,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda3   ;
;   jsr _GetFuda_Shar_SetC  ;
    inc.w   r2          ;
    inc.b   wbGetIdxC       ;
mov_all_koi_cpu_jd4:            ;
    inc.b   wbFuda4_Tim     ;
    cmp.b   #28,wbFuda4_Tim     ;
    bne end_mov_all_koi_cpu ;
    cmp.b   #$ff,wbBtoT_fuda4   ;
    be  mov_all_koi_cpu_jd_ex   ;
    mov.b   wbBtoT_fuda4,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda4   ;
;   jsr _GetFuda_Shar_SetC  ;
    inc.w   r2          ;
    inc.b   wbGetIdxC       ;
mov_all_koi_cpu_jd_ex:          ;

;;  jsr waitblk         ;まあ、待てや
;;  jsr waitblk         ;まあ、待てや
;;  jsr waitblk         ;まあ、待てや
;;  jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;
    mov.b   #10,wbActWaitTim    ;ウェイトをかます
end_mov_all_koi_cpu:            ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    popm    #r0-r3/r10      ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札のソート
;-----------------------------------------------------------------------------
srt_pul_koi_cpu:            ;
;   pushm   #r15/r16        ;

    dec.b   wbActWaitTim        ;
    bne end_srt_pul_koi_cpu ;

;   mov.w   #wbGetFudaC,r15     ;P取った札のナンバー
;   mov.w   #wbGetIdxC,r16      ;P取った札のインデックス

;   jsr _Get_Fuda_Req       ;移動札を取り札として登録する

    jsr _GetFuda_Sort_SetC  ;

    jsr _GetFuda_Shar_SetC  ;

;   mov.b   #$ff,wbBtoT_fuda1   ;後始末
;   mov.b   #$ff,wbBtoT_fuda2   ;
;   mov.b   #$ff,wbBtoT_fuda3   ;
;   mov.b   #$ff,wbB

0x71C54:

        ECT.MAC : Macro for Esect Initial data table
;               written by Manaby
;       Copyright (c) 1995-1997 VISCO corp. All rights reserved.
;------------------------------------------------------------------------------

;------------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;   __mEsect_Init   :データ形式用マクロ
;           :詳しくは下を参照
;           :4つで1組
;           :
;-----------------------------------------------

0x74000:

;-----------------------------------------------------------------------------
;   KOI_GAME.S  : KOIKOI Game Program
;               written by Manaby
;       Copyright (c) 1995-1997 VISCO corp. All rights reserved.
;------------------------------------------------------------------------------

    include     mac\esect.mac
    include     inc\manaby.inc
    include     inc\system.inc
    include     inc\koikoi.inc
    include     inc\koi_sys.inc

    xdef    koi_ply_sec,koi_cpu_sec,koi_scr_sum
    xdef    tTehudaPosP,tTehudaPosC,Fuda_Pri_Man
    xdef    koi_ex_sum,_Fuda_Shar_Cnt

    xdef    _GetFuda_Arg_AgnC,_init_GetFuda_SetC,_init_GetFuda_PosC
    xdef    tEsect_Koi_Ok,tEsect_Koi_Ok2,_GetFuda_Arg_AgnP
    xdef    tMov_All_Fuda1,tMov_All_Fuda2,tMov_All_Fuda3,tMov_All_Fuda4
    xdef    _init_GetFuda_PosP,_init_GetFuda_SetP,_Ba_Brk_Cnt,_ActWaitTim
    xdef    tEsect_Ba_cur,ChoFrzIni,ChoFrzTim,tBahudaPos1,tBahudaPos2
    xdef    _Del_Bafuda,tEsect_Fuda_Hurry

;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;   EQU領域
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------

ChoFrzIni   equ 24  ;選択初期硬直時間
ChoFrzTim   equ 16  ;選択再初期硬直時間

_ActWaitTim equ 06  ;ゲーム中のウェイト用タイマー値

;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;   ワーク領域
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------

    .section    work
    .align      4

    xdefon

wbFudaMd    ds  01  ;札モード(0:捨てる)
                ;        (1:1枚叩く)
                ;        (2:2枚から選択)

wbFudaFrmN  ds  01  ;叩く側(捨てる) 札ナンバー
wbFudaFrmP  ds  01  ;叩く側(捨てる) 札インデックス

wbFudaForN  ds  01  ;叩かれ側 札ナンバー
wbFudaForP  ds  01  ;叩かれ側 札インデックス

wbBaCurPos  ds  01  ;場札3枚以上の場合の選択時のカーソルポインタ
wbBaCurAnm  ds  01  ;場札3枚以上の場合の選択時のアニメポインタ
wbBaCurBusy ds  01  ;場札3枚以上の場合の選択時のbusyフラグ用
wbBaCurNum  ds  01  ;候補の場札の何枚目を選択しているか?

wbFudaMovTim    ds  01  ;札移動タイマー

wbBaYNPos   ds  01  ;Yes・Noポジション

wbMtoB_fuda ds  01  ;めくり札から場札への移動札ワーク

wbTtoB_fuda ds  01  ;手札から場札への捨て札用ワーク

wbBtoT_fuda1    ds  01  ;起き札
wbBtoT_fuda2    ds  01  ;手札
wbBtoT_fuda3    ds  01  ;起き札に叩かれる方
wbBtoT_fuda4    ds  01  ;手札に叩かれる方

wbBtoT_fudaC    ds  01  ;場札から取り札への移動札の枚数カウント用

wbFuda1_Tim ds  01  ;札移動タイマー1
wbFuda2_Tim ds  01  ;札移動タイマー2
wbFuda3_Tim ds  01  ;札移動タイマー3
wbFuda4_Tim ds  01  ;札移動タイマー4

wBrankFuda  ds  12  ;空いている場札の場所を正確にチェックする

wbJdKoiKoi  ds  01  ;コイコイ選択をする必要性があるか?

wbJdKoiEnd  ds  01  ;コイコイしなかった(集計へ)

wbYakuOya   ds  01  ;親権発生フラグ

wbFudaHurry ds  01  ;「札を切ってね」表示用

wbActWaitTim    ds  01  ;ゲーム中のウェイト用タイマー

wbUpCnt     ds  01  ;BGMアップテンポチェック用

    xdefoff

;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;   メイン領域
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------

    .section    main
    .align 4
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;   プレイヤーの順番
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
tkoi_ply_sec:               ;
    dw  init_koi_ply        ;初期イニシャライズ
    dw  win_str_koi_ply     ;スタートウインドウ
    dw  src_hit_koi_ply     ;叩ける札を探す
    dw  wat_key_koi_ply     ;キー入力待ち
    dw  bra_key_koi_ply     ;入力結果の分析
;   dw  cho_tre_koi_ply     ;3枚札の選択
;   dw  wat_tre_koi_ply     ;3枚札のキー入力待ち
    dw  ini_TB_koi_ply      ;手札から場札への移動のイニシャライズ
    dw  mov_TB_koi_ply      ;手札から場札への移動
    dw  srt_jam_koi_ply     ;手札の詰め
    dw  src_Ym_koi_ply      ;山札を探す(回避も含む)
    dw  mag_mby_koi_ply     ;イカサマint
    dw  opn_Ym_koi_ply      ;山札のめくり動作

    dw  src2_hit_koi_ply    ;叩ける札を探す(山札:場札)
;   dw  cho2_tre_koi_ply    ;3枚札の選択
;   dw  wat2_tre_koi_ply    ;3枚札のキー入力待ち
    dw  ini_YB_koi_ply      ;山札から場札への移動のイニシャライズ

    dw  mov_YB_koi_ply      ;山札から場札への移動

    dw  ini_all_koi_ply     ;取った札すべての移動のイニシャライズ

    dw  mov_all_koi_ply     ;取った札すべての移動
    dw  srt_pul_koi_ply     ;取った札のソート
    dw  eva_pul_koi_ply     ;取った札の評価
    dw  ini_dir_mom_koi_ply ;瞬間での出来役演出判定
    dw  dir_mom_koi_ply     ;瞬間での出来役演出
    dw  win_ask_koi_ply     ;コイコイする?ウインドウ
    dw  cho_koi_koi_ply     ;コイコイの選択
    dw  wat_koi_koi_ply     ;コイコイのキー入力待ち
    dw  win_koi_koi_ply     ;コイコイしてくれたウインドウ
    dw  win_res_koi_ply     ;勝ち負けウインドウ
    dw  next_koi_ply        ;後処理
;-----------------------------------------------------------------------------
koi_ply_sec:                ;プレイヤーセクション
    push    r10         ;
    movz.bw wbKoiDist,r10       ;
    mov.w   tkoi_ply_sec(r10),r10   ;オラオラオラオラー
    jsr [r10]           ;
    jsr Fuda_Pri_Man        ;
    jsr Fuda_Esect      ;
    pop r10         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   初期イニシャライズ
;-----------------------------------------------------------------------------
init_koi_ply:               ;

;   jsr _init_Get_Fuda      ;「取った札」用ワークの初期化
;   jsr _Yaku_val_init      ;出来役評価用ワークの初期化

    jsr __1PKEY_Init        ;I/O初期化
    mov.b   #$ff,wbCurIO        ;初期入力はニュートラルにする
    mov.b   #$00,wbCurBusy      ;動作制限を解除

    mov.b   #$00,wbCurPos       ;カーソルポジションの初期化

;   mov.b   #$01,wbSysCur       ;カーソルをノーマルモードに移行

    mov.b   #$00,wbJdKoiKoi     ;
    mov.b   #$00,wbJdKoiEnd     ;

    mov.b   #$00,wbDPltVct      ;

    inc.b   wbKoiDist       ;
    rsr             ;
;-----------------------------------------------------------------------------
;   スタートウインドウ
;-----------------------------------------------------------------------------
win_str_koi_ply:            ;
    push    r25         ;

    cmp.b   #$08,wbCpuFudaCnt   ;初回判定
    bne next_win_str_koi_ply    ;

    test1   #$00,wbKoiOrd       ;
    bne next_win_str_koi_ply    ;

    mov.b   #$00,wbKoiWindowAction  ;スタートウインドウ
    jsr Koi_Window      ;
    test.b  r25         ;
    bne end_win_str_koi_ply ;
next_win_str_koi_ply:           ;
    mov.b   #$01,wbSysCur       ;カーソルをノーマルモードに移行
    inc.b   wbKoiDist       ;
end_win_str_koi_ply:            ;
    pop r25         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   叩ける札を探す
;-----------------------------------------------------------------------------
src_hit_koi_ply:            ;
    pushm   #r1/r3          ;
    jsr _init_Hit_Ok        ;札ヒットワークの初期化
    mov.w   #wPly_Tehuda,r3     ;
    jsr _Eva_hit_jd     ;札のヒット評価
    inc.b   wbKoiDist       ;

    mov.b   #$00,wbFudaFrmN     ;初期化
    mov.b   #$00,wbFudaFrmP     ;
    mov.b   #$00,wbFudaForN     ;
    mov.b   #$00,wbFudaForP     ;

    mov.b   #$ff,wbMtoB_fuda    ;初期化
    mov.b   #$ff,wbTtoB_fuda    ;
    mov.b   #$ff,wbBtoT_fuda1   ;
    mov.b   #$ff,wbBtoT_fuda2   ;
    mov.b   #$ff,wbBtoT_fuda3   ;
    mov.b   #$ff,wbBtoT_fuda4   ;
    mov.b   #$00,wbBtoT_fudaC   ;

    mov.w   #$00,wBrankFuda     ;初期化
    mov.w   #$00,wBrankFuda+$04 ;
    mov.w   #$00,wBrankFuda+$08 ;

    mov.w   #$00,wbMarker       ;
    mov.w   #$00,wbMarker+$04   ;

    mov.b   #$01,wbMarkerCk     ;マーカー始動

    mov.b   #$01,wbFudaHurry    ;「札を切ってね」パネルの始動
    mov.w   #tEsect_Fuda_Hurry,r1   ;「札を切ってね」をリクエスト
    jsr __Esect_Req     ;

;   mov.b   #$00,wbCurPos       ;カーソルポジションの初期化

    popm    #r1/r3          ;
    rsr             ;
;-----------------------------------------------------------------------------
;   キー入力待ち
;-----------------------------------------------------------------------------
wat_key_koi_ply:            ;
    pushm   #r15/r20        ;

    mov.b   #$00,r20        ;処理続行中
    jsr _Sys_tim_gen        ;

    inc.b   wbRandEx1       ;うりゃー、まわせー

    test.b  wbDipCntrol     ;コンパネ判定
    bne wat_key_koi_ply_KB  ;
wat_key_koi_ply_JS:         ;
    test.b  wbDemoPlay      ;
    be  wat2_key_koi_ply_JS ;
    mov.b   #$f7,r15        ;デモプレイ中は強制入力
    br  wat3_key_koi_ply_JS ;
wat2_key_koi_ply_JS:            ;
    jsr __1PKEY_JD      ;
wat3_key_koi_ply_JS:            ;
    mov.b   r15,wbCurIO     ;
;   mov.b   JOY1PKEY,wbCurIO    ;
    br  wat_key_koi_ply_ex  ;
wat_key_koi_ply_KB:         ;
    test.b  wbDemoPlay      ;
    be  wat2_key_koi_ply_KB ;
    mov.b   #$01,JOY1PKEY       ;デモプレイ中は強制入力
    br  wat3_key_koi_ply_KB ;
wat2_key_koi_ply_KB:            ;
    jsr __KBKEY_JD      ;
    test.b  JOY1PKEY        ;
    be  wat_key_koi_ply_ex  ;
wat3_key_koi_ply_KB:            ;
    cmp.b   wbPlyFudaCnt,JOY1PKEY   ;
    bh  wat_key_koi_ply_ex  ;
    mov.b   JOY1PKEY,r15        ;
    dec.b   r15         ;
    mov.b   r15,wbCurPos        ;
    mov.b   #$01,wbCurBusy      ;

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

wat_key_koi_ply_ex:         ;
    mov.b   #$00,wbCurBusy2     ;コンフリクト回避用
;   mov.b   #$00,r20        ;処理続行中
;   jsr _Sys_tim_gen        ;
    test.h  whSysTimDsp     ;タイマーは稼働終了か?
    be  det_wat_key_koi_ply ;強制終了へ

    test.b  wbCurBusy       ;
    be  end_wat_key_koi_ply ;
det_wat_key_koi_ply:            ;決定
    mov.b   #$01,r20        ;タイマーカット
    jsr _Sys_tim_gen        ;
    mov.b   #$00,wbCurBusy      ;
    inc.b   wbKoiDist       ;
    mov.b   #$00,wbMarkerCk     ;マーカー停止
    mov.b   #$00,wbFudaHurry    ;「札を切ってね」パネルの強制停止
end_wat_key_koi_ply:            ;
    popm    #r15/r20        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   入力結果の分析
;-----------------------------------------------------------------------------
bra_key_koi_ply:            ;
;   pushm   #r3/r4          ;
    pushm   #r10-r15/r20        ;
    movz.bw wbCurPos,r10        ;カーソル位置の取得
    mov.w   #wbHitOk,r11        ;札ヒットワーク(8枚*3種)
    mov.w   #wbHitCk,r12        ;札ヒットフラグ(8枚)
    mov.w   #wbHitPs,r13        ;札ヒットポジション(8枚*3種)
    mov.w   #wPly_Tehuda,r14    ;プレイヤー手札ワーク
    test.b  [r12](r10)      ;こいつは叩くことが出来るか?
    be  give_bra_key_koi_ply    ;こいつは叩けないよ
    cmp.b   #$01,[r12](r10)     ;
    be  sig_bra_key_koi_ply ;1枚だけ叩ける
    cmp.b   #$02,[r12](r10)     ;
    be  dbl_bra_key_koi_ply ;2枚も叩ける
    nop             ;場に3枚以上存在する場合は、
    nop             ;とばない様に(すり抜けさせる様に)、
    nop             ;一時的に設定しておく
    nop             ;
give_bra_key_koi_ply:           ;場に捨てるとき
    mov.b   #$00,wbFudaMd       ;モードの設定
    jsr _Bahuda_Emp     ;場札の空き場所を探す
    mov.b   [r14](r10),wbFudaFrmN   ;叩く側(捨てる) 札ナンバー

;;  mov.b   [r14](r10),wbBtoT_fuda2 ;手札捨てるべし

    mov.b   [r14](r10),wbTtoB_fuda  ;移動札としての登録
    mov.b   #$ff,[r14](r10)     ;手札内からの登録抹消

    movt.wb r10,wbFudaFrmP      ;叩く側(捨てる) 札インデックス
    mov.b   #$ff,wbFudaForN     ;エラーを起こさせる
    mov.b   r20,wbFudaForP      ;叩く側(捨てる) 札インデックス

;   mov.w   #whAiBrainNo,r3     ;自動のーみそ吸い取り機
;   movz.bh wbPlyFudaCnt,r4     ;
;   add.h   r4,[r3](r10)        ;

    br  end_bra_key_koi_ply ;
sig_bra_key_koi_ply:            ;合わせ札が1枚のとき
    mov.b   #$01,wbFudaMd       ;モードの設定
    mov.w   r10,r15         ;逃がす

;   mov.w   #whAiBrainOk,r3     ;自動のーみそ吸い取り機
;   movz.bh wbPlyFudaCnt,r4     ;
;   add.h   r4,[r3](r10)        ;

    mul.w   #$03,r15        ;単位を合わせる
    mov.b   [r14](r10),wbFudaFrmN   ;叩く側(捨てる) 札ナンバー
    mov.b   [r14](r10),wbBtoT_fuda2 ;手札移動登録
    inc.b   wbBtoT_fudaC        ;カウントする
;   mov.b   [r14](r10),wbTtoB_fuda  ;移動札としての登録
    mov.b   #$ff,[r14](r10)     ;手札内からの登録抹消
    movt.wb r10,wbFudaFrmP      ;叩く側(捨てる) 札インデックス
    mov.b   [r11](r15),wbFudaForN   ;叩かれ側 札ナンバー
    mov.b   [r11](r15),wbBtoT_fuda4 ;手札に叩かれ移動登録
    inc.b   wbBtoT_fudaC        ;カウントする
;   mov.b   #$ff,[r11](r15)     ;場札登録の抹消
    mov.b   [r13](r15),wbFudaForP   ;叩かれ側 札インデックス
    mov.b   [r13](r15),r20      ;
    jsr _Del_Bafuda     ;場札登録の抹消
    br  end_bra_key_koi_ply ;
dbl_bra_key_koi_ply:            ;合わせ札が2枚のとき
    mov.b   #$02,wbFudaMd       ;モードの設定

;   mov.w   #whAiBrainOk,r3     ;自動のーみそ吸い取り機
;   movz.bh wbPlyFudaCnt,r4     ;
;   add.h   r4,[r3](r10)        ;

    mov.b   [r14](r10),wbFudaFrmN   ;叩く側(捨てる) 札ナンバー
;   mov.b   [r14](r10),wbTtoB_fuda  ;移動札としての登録
    mov.b   [r14](r10),wbBtoT_fuda2 ;手札移動登録
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   #$ff,[r14](r10)     ;手札内からの登録抹消
    movt.wb r10,wbFudaFrmP      ;叩く側(捨てる) 札インデックス
end_bra_key_koi_ply:            ;
    inc.b   wbKoiDist       ;
    popm    #r10-r15/r20        ;
;   popm    #r3/r4          ;
    rsr             ;
;-----------------------------------------------------------------------------
;   3枚札の選択
;-----------------------------------------------------------------------------
cho_tre_koi_ply:            ;
    pushm   #r1/r10-r11     ;
    cmp.b   #$02,wbFudaMd       ;3枚選択モードか?
    bne end_cho_tre_koi_ply ;違うっす

    mov.b   #$00,wbBaCurPos     ;初期化
    mov.b   #$00,wbBaCurAnm     ;
    mov.b   #$00,wbBaCurBusy    ;
    mov.b   #$00,wbBaCurNum     ;
    mov.b   #$00,wbBaYNPos      ;

    movz.bw wbCurPos,r10        ;カーソル位置の取得
    mul.w   #$03,r10        ;
    mov.w   #wbHitPs,r11        ;札ヒットポジション(8枚*3種)
    mov.b   [r11](r10),wbBaCurPos   ;初期ポジションの登録

    mov.w   #tEsect_Ba_cur,r1   ;選択セットをリクエスト
    jsr __Esect_Req     ;
    jsr __1PKEY_Init        ;I/O再初期化

    mov.b   #ChoFrzIni,wbFudaMovTim ;選択初期硬直時間の設定

    push    r1          ;
    mov.b   #SE_Msg,r1      ;メッセージウインドウ
    jsr __mya_se        ;
    pop r1          ;

end_cho_tre_koi_ply:            ;
    inc.b   wbKoiDist       ;
    popm    #r1/r10-r11     ;
    rsr             ;
;-----------------------------------------------------------------------------
;   3枚札のキー入力待ち
;-----------------------------------------------------------------------------
wat_tre_koi_ply:            ;
    pushm   #r10-r12/r15/r20    ;
    cmp.b   #$02,wbFudaMd       ;3枚選択モードか?
    be  frz_wat_tre_koi_ply ;らしい
    inc.b   wbKoiDist       ;ベクタを進める
    br  end_wat_tre_koi_ply ;
frz_wat_tre_koi_ply:            ;
    test.b  wbFudaMovTim        ;
    be  mod_wat_tre_koi_ply ;
    dec.b   wbFudaMovTim        ;初期硬直
    mov.w   #$ff,r15        ;ダミー・ニュートラル
    br  ini_wat_tre_koi_ply ;
mod_wat_tre_koi_ply:            ;
    jsr __1PKEY_JD      ;
ini_wat_tre_koi_ply:            ;ワークセットしておかないと
    mov.b   #$00,wbCurBusy2     ;コンフリクト回避用
    mov.b   #$00,r20        ;処理続行中
    jsr _Sys_tim_gen        ;

    movz.bw wbBaCurNum,r12      ;ナンバー+α値取得
    movz.bw wbCurPos,r10        ;カーソル位置の取得
    mul.w   #$03,r10        ;
    add.w   r12,r10         ;ずらす
    mov.w   #wbHitPs,r11        ;札ヒットポジション(8枚*3種)
    mov.b   [r11](r10),wbBaCurPos   ;ポジションの登録
A_wat_tre_koi_ply:          ;Aボタンチェック
    test.h  whSysTimDsp     ;タイマーは稼働中終了か?
    be  fin_wat_tre_koi_ply ;
    test1   #$03,r15        ;
    bne R_wat_tre_koi_ply   ;
PA_wat_tre_koi_ply:         ;Aボタンを押した場合
    mov.b   #$01,r20        ;タイマーカット
    jsr _Sys_tim_gen        ;

    push    r1          ;
    mov.b   #SE_Dec1,r1     ;決定音
    jsr __mya_se        ;
    pop r1          ;

    test.b  wbBaYNPos       ;Yesを選んだかいな?
    be  fin_wat_tre_koi_ply ;
    inc.b   wbBaCurNum      ;Noを選んだらしい
    mov.b   #ChoFrzTim,wbFudaMovTim ;硬直時間の再設定
    mov.b   #$00,wbBaYNPos      ;Yesに合わせ直し
    cmp.b   #$02,wbBaCurNum     ;
    bne end_wat_tre_koi_ply ;
    mov.b   #$00,wbBaCurNum     ;
    br  end_wat_tre_koi_ply ;
R_wat_tre_koi_ply:          ;右チェック
    test1   #$04,r15        ;
    bne L_wat_tre_koi_ply   ;

    push    r1          ;
    mov.b   #SE_Cur1,r1     ;カーソル移動音
    jsr __mya_se        ;
    pop r1          ;

    mov.b   #$01,wbBaYNPos      ;右ループしない
    br  end_wat_tre_koi_ply ;
L_wat_tre_koi_ply:          ;左チェック
    test1   #$05,r15        ;
    bne end_wat_tre_koi_ply ;

    push    r1          ;
    mov.b   #SE_Cur1,r1     ;カーソル移動音
    jsr __mya_se        ;
    pop r1          ;

    mov.b   #$00,wbBaYNPos      ;左ループしない
    br  end_wat_tre_koi_ply ;
fin_wat_tre_koi_ply:            ;最終処理(未登録データの登録処理)
    movz.bw wbBaCurNum,r12      ;ナンバー+α値取得
    movz.bw wbCurPos,r10        ;カーソル位置の取得
    mul.w   #$03,r10        ;
    add.w   r12,r10         ;ずらす
    mov.w   #wbHitOk,r11        ;札ヒットワーク(8枚*3種)
    mov.b   [r11](r10),wbFudaForN   ;叩かれ側 札ナンバー
    mov.b   [r11](r10),wbBtoT_fuda4 ;手札に叩かれ移動登録
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   #$ff,[r11](r10)     ;場札登録の抹消
    mov.w   #wbHitPs,r11        ;札ヒットポジション(8枚*3種)
    mov.b   [r11](r10),wbFudaForP   ;叩かれ側 札インデックス
    mov.b   [r11](r10),r20      ;
    jsr _Del_Bafuda     ;場札登録の抹消
    inc.b   wbKoiDist       ;ベクタを進める
    mov.b   #$01,wbBaCurBusy    ;終了!!
end_wat_tre_koi_ply:            ;
    popm    #r10-r12/r15/r20    ;
    rsr             ;
;-----------------------------------------------------------------------------
;   手札から場札への移動のイニシャライズ
;-----------------------------------------------------------------------------
ini_TB_koi_ply:             ;
    pushm   #r0/r10-r14/r21-r22 ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    movz.bw wbFudaFrmP,r11      ;叩く側(捨てる) 札インデックス
    movz.bw wbFudaForN,r12      ;叩かれ側 札ナンバー
    movz.bw wbFudaForP,r13      ;叩かれ側 札インデックス
    mov.w   #wFuda,r14      ;札ワーク
    test.b  wbFudaMd        ;
    bne get_ini_TB_koi_ply  ;
give_ini_TB_koi_ply:            ;場に捨てる場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
;   mov.w   [r14](r10),r0       ;目標札ワークの先頭
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos1(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos1(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
    br  end_ini_TB_koi_ply  ;
get_ini_TB_koi_ply:         ;札を叩く場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
;   mov.w   [r14](r10),r0       ;目標札ワークの先頭
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos2(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos2(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
end_ini_TB_koi_ply:         ;
    dec.b   wbPlyFudaCnt        ;札枚数を減らす
    mov.b   #$02,wbSysCur       ;カーソルをスリープモードに移行
    inc.b   wbKoiDist       ;
    mov.b   #16,wbFudaMovTim    ;札移動タイマーをセット
    popm    #r0/r10-r14/r21-r22 ;
    rsr             ;
;-----------------------------------------------------------------------------
;   手札から場札への移動
;-----------------------------------------------------------------------------
mov_TB_koi_ply:             ;
    pushm   #r0/r10/r11     ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    mov.w   #wFuda,r11      ;札ワーク
    shl.w   #$05,r0         ;
    add.w   r11,r0          ;
    jsr _fuda_ptp_mov       ;
    dec.b   wbFudaMovTim        ;
    bnz end_mov_TB_koi_ply  ;
next_mov_TB_koi_ply:            ;
    cmp.b   #$ff,wbTtoB_fuda    ;
    bne next_mov_TB_koi_ply_ex  ;

    push    r1          ;
    mov.b   #SE_FHit2,r1        ;ひっくり返す音後半
    jsr __mya_se        ;
    pop r1          ;

    br  next2_mov_TB_koi_ply    ;

next_mov_TB_koi_ply_ex:         ;

    mov.w   #wBa_huda,r0        ;
    movz.bw wbFudaForP,r11      ;
    mov.b   wbTtoB_fuda,[r0](r11)   ;
    mov.b   #$ff,wbTtoB_fuda    ;

    push    r1          ;
    mov.b   #SE_FHit1,r1        ;札を置く
    jsr __mya_se        ;
    pop r1          ;

;   cmp.b   #$ff,wbBtoT_fuda4   ;
;   be  next2_mov_TB_koi_ply    ;
;   mov.w   #wBa_huda,r0        ;
;   movz.bw wbFudaForP,r11      ;
;   mov.b   wbBtoT_fuda4,[r0](r11)  ;
;   mov.b   #$ff,wbBtoT_fuda4   ;

next2_mov_TB_koi_ply:           ;
    inc.b   wbKoiDist       ;
end_mov_TB_koi_ply:         ;
    popm    #r0/r10/r11     ;
    rsr             ;
;-----------------------------------------------------------------------------
;   手札の詰め
;-----------------------------------------------------------------------------
srt_jam_koi_ply:            ;
    jsr _Fuda_Mon_SortP     ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
end_srt_jam_koi_ply:            ;
;   dec.b   wbPlyFudaCnt        ;札枚数を減らす
    mov.b   #$00,wbKoiDist2_tim ;
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
    inc.b   wbKoiDist       ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札を探す(回避も含む)
;-----------------------------------------------------------------------------
src_Ym_koi_ply:             ;
    pushm   #r10/r20        ;
    dec.b   wbActWaitTim        ;ちょっと待った
    bne end_src_Ym_koi_ply  ;

    jsr _Ba_Brk_Cnt     ;ブランクのカウント
    cmp.b   #$01,r20        ;1枚以下なら
    ble ex_src_Ym_koi_ply   ;イカサマする
job_src_Ym_koi_ply:         ;
    jsr _Bahuda_Emp     ;空き場所を探す
    cmp.b   #$ff,r20        ;空きがないよ
    be  ex_src_Ym_koi_ply   ;
    add.b   #$02,wbKoiDist      ;イカサマintは無し
    jsr _Mak_Yamafuda       ;
    mov.b   r20,wbMtoB_fuda     ;めくり札に登録
    movz.bw r20,r10         ;札ナンバー
    mov.w   #$ff,r20        ;予定は未定
    jsr _fuda_req       ;札のリクエスト

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    push    r1          ;
    mov.b   #SE_FRol,r1     ;ひっくり返すときの音
    jsr __mya_se        ;
    pop r1          ;

    br  end_src_Ym_koi_ply  ;
ex_src_Ym_koi_ply:          ;イカサマの準備

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;イカサマしないといけないよ
end_src_Ym_koi_ply:         ;
    popm    #r10/r20        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   イカサマint
;-----------------------------------------------------------------------------
mag_mby_koi_ply:            ;
    pushm   #r16-r17/r20        ;
    mov.w   #$00,r20        ;
    mov.w   #12,r16         ;
loop_mag_mby_koi_ply:           ;
    jsr _Koi_Ark_m00        ;
    test.b  r17         ;
    bnz end_mag_mby_koi_ply ;
    inc.w   r20         ;
    dec.w   r16         ;
    bnz loop_mag_mby_koi_ply    ;
    jsr Reset           ;致命的エラーなのでリセット
end_mag_mby_koi_ply:            ;

    push    r1          ;
    mov.b   #SE_FRol,r1     ;ひっくり返すときの音
    jsr __mya_se        ;
    pop r1          ;

    jsr _Mak_Yamafuda       ;
    mov.b   r20,wbMtoB_fuda     ;めくり札に登録
    movz.bw r20,r10         ;札ナンバー
    mov.w   #$ff,r20        ;予定は未定
    jsr _fuda_req       ;札のリクエスト

    inc.b   wbKoiDist       ;
    popm    #r16-r17/r20        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札のめくり動作
;-----------------------------------------------------------------------------
opn_Ym_koi_ply:             ;
    pushm   #r10-r12        ;

    mov.w   #wFuda,r10      ;
    movz.bw wbMtoB_fuda,r11     ;めくり札
    shl.w   #$05,r11        ;
    add.w   r10,r11         ;目的ワークの先頭
    movz.bw wbKoiDist2_tim,r12  ;
    mov.b   tOpen__Fuda_Rot(r12),_Fuda_dsp[r11] ;
    inc.b   wbKoiDist2_tim      ;
    cmp.b   #10,wbKoiDist2_tim  ;
    bne end_opn_Ym_koi_ply  ;
    inc.b   wbKoiDist       ;

    jsr _init_Hit_Ok        ;

    mov.b   #$00,wbFudaFrmN     ;初期化
    mov.b   #$00,wbFudaFrmP     ;
    mov.b   #$00,wbFudaForN     ;
    mov.b   #$00,wbFudaForP     ;

    mov.b   #$ff,wbTtoB_fuda    ;

end_opn_Ym_koi_ply:         ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    popm    #r10-r12        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   叩ける札を探す(山札:場札)
;-----------------------------------------------------------------------------
src2_hit_koi_ply:           ;叩ける札を探す(山札:場札)
    push    r20         ;
    jsr _Eva2_hit_jd        ;めくり札のヒット評価
    test.b  wbHitCkB        ;
    be  give_src2_hit_koi_ply   ;叩けない
    cmp.b   #$01,wbHitCkB       ;
    be  sig_src2_hit_koi_ply    ;1枚叩ける
    cmp.b   #$02,wbHitCkB       ;
    be  dbl_src2_hit_koi_ply    ;2枚叩ける
    nop             ;場に3枚以上存在する場合は、
    nop             ;とばない様に(すり抜けさせる様に)、
    nop             ;一時的に設定しておく
    nop             ;
give_src2_hit_koi_ply:          ;場に捨てるとき
    mov.b   #$00,wbFudaMd       ;モードの設定
    jsr _Bahuda_Emp     ;空き場所を探す
    mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー

;;  mov.b   wbMtoB_fuda,wbBtoT_fuda1    ;
    mov.b   wbMtoB_fuda,wbTtoB_fuda     ;

    mov.b   #$00,wbFudaFrmP     ;1種類だけだから
    mov.b   #$ff,wbFudaForN     ;エラーを起こさせる
    mov.b   r20,wbFudaForP      ;叩かれ側 札インデックス
    br  end_src2_hit_koi_ply    ;
sig_src2_hit_koi_ply:           ;
    mov.b   #$01,wbFudaMd       ;モードの設定
    mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー
    mov.b   wbMtoB_fuda,wbBtoT_fuda1    ;叩くやつ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   #$00,wbFudaFrmP     ;1種類だけだから
    mov.b   wbHitOkB,wbFudaForN ;叩かれ側 札ナンバー
    mov.b   wbHitOkB,wbBtoT_fuda3   ;起き札に叩かれるヤツ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   wbHitPsB,wbFudaForP ;叩かれ側 札インデックス
    mov.b   wbHitPsB,r20        ;
    jsr _Del_Bafuda     ;場札登録の抹消
    br  end_src2_hit_koi_ply    ;
dbl_src2_hit_koi_ply:           ;
    mov.b   #$02,wbFudaMd       ;モードの設定
    mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー
    mov.b   wbMtoB_fuda,wbBtoT_fuda1    ;叩くヤツ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   #$00,wbFudaFrmP     ;1種類だけだから
end_src2_hit_koi_ply:           ;
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
    mov.b   #$ff,wbMtoB_fuda    ;起き札登録の抹消
    inc.b   wbKoiDist       ;
    pop r20         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   3枚札の選択
;-----------------------------------------------------------------------------
cho2_tre_koi_ply:           ;3枚札の選択
    push    r1          ;
    cmp.b   #$02,wbFudaMd       ;3枚選択モードか?
    bne end_cho2_tre_koi_ply    ;

    mov.b   #$00,wbBaCurPos     ;初期化
    mov.b   #$00,wbBaCurAnm     ;
    mov.b   #$00,wbBaCurBusy    ;
    mov.b   #$00,wbBaCurNum     ;
    mov.b   #$00,wbBaYNPos      ;

    mov.b   wbHitPs,wbBaCurPos  ;

    mov.w   #tEsect_Ba_cur,r1   ;選択セットをリクエスト
    jsr __Esect_Req     ;
    jsr __1PKEY_Init        ;I/O再初期化

    mov.b   #ChoFrzIni,wbFudaMovTim ;選択初期硬直時間の設定

    push    r1          ;
    mov.b   #SE_Msg,r1      ;メッセージウインドウ
    jsr __mya_se        ;
    pop r1          ;

end_cho2_tre_koi_ply:           ;
    inc.b   wbKoiDist       ;
    pop r1          ;
    rsr             ;
;-----------------------------------------------------------------------------
;   3枚札のキー入力待ち
;-----------------------------------------------------------------------------
wat2_tre_koi_ply:           ;3枚札のキー入力待ち
    pushm   #r10/r11/r15        ;
    cmp.b   #$02,wbFudaMd       ;3枚選択モードか?
    be  frz_wat2_tre_koi_ply    ;らしい
;   mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
    inc.b   wbKoiDist       ;ベクタを進める
    br  end_wat2_tre_koi_ply    ;
frz_wat2_tre_koi_ply:           ;
    test.b  wbFudaMovTim        ;
    be  mod_wat2_tre_koi_ply    ;
    dec.b   wbFudaMovTim        ;初期硬直
    mov.w   #$ff,r15        ;ダミー・ニュートラル
    br  ini_wat2_tre_koi_ply    ;
mod_wat2_tre_koi_ply:           ;
    jsr __1PKEY_JD      ;
ini_wat2_tre_koi_ply:           ;
    mov.b   #$00,wbCurBusy2     ;コンフリクト回避用
    mov.b   #$00,r20        ;処理続行中
    jsr _Sys_tim_gen        ;

    movz.bw wbBaCurNum,r10      ;ナンバー+α値取得
    mov.w   #wbHitPsB,r11       ;
    mov.b   [r11](r10),wbBaCurPos   ;ポジションの登録
A_wat2_tre_koi_ply:         ;Aボタンチェック
    test.h  whSysTimDsp     ;キャンセルタイマーチェック
    be  fin_wat2_tre_koi_ply    ;
    test1   #$03,r15        ;
    bne R_wat2_tre_koi_ply  ;
PA_wat2_tre_koi_ply:            ;
    mov.b   #$01,r20        ;タイマーカット
    jsr _Sys_tim_gen        ;

    push    r1          ;
    mov.b   #SE_Dec1,r1     ;決定音
    jsr __mya_se        ;
    pop r1          ;

    test.b  wbBaYNPos       ;Yesを選んだかいな?
    be  fin_wat2_tre_koi_ply    ;
    inc.b   wbBaCurNum      ;Noを選んだらしい
    mov.b   #ChoFrzTim,wbFudaMovTim ;硬直時間の再設定
    mov.b   #$00,wbBaYNPos      ;Yesに合わせ直し
    cmp.b   #$02,wbBaCurNum     ;
    bne end_wat2_tre_koi_ply    ;
    mov.b   #$00,wbBaCurNum     ;
    br  end_wat2_tre_koi_ply    ;
R_wat2_tre_koi_ply:         ;右チェック
    test1   #$04,r15        ;
    bne L_wat2_tre_koi_ply  ;

    push    r1          ;
    mov.b   #SE_Cur1,r1     ;カーソル移動音
    jsr __mya_se        ;
    pop r1          ;

    mov.b   #$01,wbBaYNPos      ;右ループしない
    br  end_wat2_tre_koi_ply    ;
L_wat2_tre_koi_ply:         ;左チェック
    test1   #$05,r15        ;
    bne end_wat2_tre_koi_ply    ;

    push    r1          ;
    mov.b   #SE_Cur1,r1     ;カーソル移動音
    jsr __mya_se        ;
    pop r1          ;

    mov.b   #$00,wbBaYNPos      ;左ループしない
    br  end_wat2_tre_koi_ply    ;
fin_wat2_tre_koi_ply:           ;
    movz.bw wbBaCurNum,r10      ;ナンバー+α値取得
    mov.w   #wbHitOkB,r11       ;場札ヒットワーク(3種)
    mov.b   [r11](r10),wbFudaForN   ;叩かれ側 札ナンバー
    mov.b   [r11](r10),wbBtoT_fuda3 ;
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.w   #wbHitPsB,r11       ;場札ヒットポジション(3種)
    mov.b   [r11](r10),wbFudaForP   ;叩かれ側 札インデックス
    mov.b   [r11](r10),r20      ;
    jsr _Del_Bafuda     ;場札登録の抹消
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
    inc.b   wbKoiDist       ;ベクタを進める
    mov.b   #$01,wbBaCurBusy    ;終了!!
end_wat2_tre_koi_ply:           ;
    popm    #r10/r11/r15        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札から場札への移動のイニシャライズ
;-----------------------------------------------------------------------------
ini_YB_koi_ply:             ;山札から場札への移動のイニシャライズ
    pushm   #r0/r10-r14/r21-r22 ;
    dec.b   wbActWaitTim        ;待つのだ
    bne fin_end_ini_YB_koi_ply  ;
init_ini_YB_koi_ply:            ;

    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    movz.bw wbFudaFrmP,r11      ;叩く側(捨てる) 札インデックス
    movz.bw wbFudaForN,r12      ;叩かれ側 札ナンバー
    movz.bw wbFudaForP,r13      ;叩かれ側 札インデックス
    mov.w   #wFuda,r14      ;札ワーク
    test.b  wbFudaMd        ;
    bne get_ini_YB_koi_ply  ;
give_ini_YB_koi_ply:            ;場に捨てる場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos1(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos1(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
    br  end_ini_YB_koi_ply  ;
get_ini_YB_koi_ply:         ;札を叩く場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos2(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos2(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
end_ini_YB_koi_ply:         ;

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;
    mov.b   #16,wbFudaMovTim    ;札移動タイマーをセット

fin_end_ini_YB_koi_ply:         ;

    popm    #r0/r10-r14/r21-r22 ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札から場札への移動
;-----------------------------------------------------------------------------
mov_YB_koi_ply:             ;
    pushm   #r0/r10/r11     ;
;   jsr Fuda_Esect      ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    mov.w   #wFuda,r11      ;札ワーク
    shl.w   #$05,r0         ;
    add.w   r11,r0          ;
    jsr _fuda_ptp_mov       ;
    dec.b   wbFudaMovTim        ;
    bnz end_mov_YB_koi_ply  ;
next_mov_YB_koi_ply:            ;
    cmp.b   #$ff,wbTtoB_fuda    ;
    bne next_mov_YB_koi_ply_ex  ;

    push    r1          ;
    mov.b   #SE_FHit2,r1        ;ひっくり返す音後半
    jsr __mya_se        ;
    pop r1          ;

    br  next2_mov_YB_koi_ply    ;

next_mov_YB_koi_ply_ex:         ;

    mov.w   #wBa_huda,r0        ;
    movz.bw wbFudaForP,r11      ;
    mov.b   wbTtoB_fuda,[r0](r11)   ;
    mov.b   #$ff,wbTtoB_fuda    ;

    push    r1          ;
    mov.b   #SE_FHit1,r1        ;札を置く
    jsr __mya_se        ;
    pop r1          ;

;   cmp.b   #$ff,wbBtoT_fuda1   ;
;   be  next2_mov_YB_koi_ply    ;
;   mov.w   #wBa_huda,r0        ;
;   movz.bw wbFudaForP,r11      ;
;   mov.b   wbBtoT_fuda1,[r0](r11)  ;
;   mov.b   #$ff,wbBtoT_fuda1   ;

next2_mov_YB_koi_ply:           ;
    inc.b   wbKoiDist       ;
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
end_mov_YB_koi_ply:         ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    popm    #r0/r10/r11     ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札すべての移動のイニシャライズ
;-----------------------------------------------------------------------------
ini_all_koi_ply:            ;取った札すべての移動のイニシャライズ
    pushm   #r1/r10-r14     ;
    dec.b   wbActWaitTim        ;
    bne fin_ini_all_koi_ply ;

    mov.b   #$00,wbFuda1_Tim    ;タイマー初期化
    mov.b   #$00,wbFuda2_Tim    ;
    mov.b   #$00,wbFuda3_Tim    ;
    mov.b   #$00,wbFuda4_Tim    ;

    mov.w   #wbGetFudaP,r10     ;ワーク
    jsr _Fuda_Shar_Cnt      ;カウントしてみる
    jsr _init_GetFuda_PosP  ;ポジションの割り出し

job1_ini_all_koi_ply:           ;
    movz.bw wbBtoT_fuda1,r1     ;
    cmp.w   #$ff,r1         ;
    be  job2_ini_all_koi_ply    ;
    jsr _init_GetFuda_SetP  ;
job2_ini_all_koi_ply:           ;
    movz.bw wbBtoT_fuda2,r1     ;
    cmp.w   #$ff,r1         ;
    be  job3_ini_all_koi_ply    ;
    jsr _init_GetFuda_SetP  ;
job3_ini_all_koi_ply:           ;
    movz.bw wbBtoT_fuda3,r1     ;
    cmp.w   #$ff,r1         ;
    be  job4_ini_all_koi_ply    ;
    jsr _init_GetFuda_SetP  ;
job4_ini_all_koi_ply:           ;
    movz.bw wbBtoT_fuda4,r1     ;
    cmp.w   #$ff,r1         ;
    be  end_ini_all_koi_ply ;
    jsr _init_GetFuda_SetP  ;
end_ini_all_koi_ply:            ;

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;
fin_ini_all_koi_ply:            ;
    popm    #r1/r10-r14     ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札すべての移動
;-----------------------------------------------------------------------------
mov_all_koi_ply:            ;
    pushm   #r0-r3/r10      ;
    mov.w   #wFuda,r1       ;
mov_all_koi_ply_job1:           ;
    movz.bw wbFuda1_Tim,r2      ;
    mov.b   tMov_All_Fuda1(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_ply_job2    ;
    cmp.b   #$ff,wbBtoT_fuda1   ;
    be  mov_all_koi_ply_job2    ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_ply_job1_ex ;

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

mov_all_koi_ply_job1_ex:        ;

    movz.bw wbBtoT_fuda1,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_ply_job2:           ;
    movz.bw wbFuda2_Tim,r2      ;
    mov.b   tMov_All_Fuda2(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_ply_job3    ;
    cmp.b   #$ff,wbBtoT_fuda2   ;
    be  mov_all_koi_ply_job3    ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_ply_job2_ex ;

;   push    r1          ;
;   mov.b   #$52,r1         ;札を切る音
;   jsr __mya_se        ;
;   pop r1          ;

mov_all_koi_ply_job2_ex:        ;

    movz.bw wbBtoT_fuda2,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_ply_job3:           ;
    movz.bw wbFuda3_Tim,r2      ;
    mov.b   tMov_All_Fuda3(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_ply_job4    ;
    cmp.b   #$ff,wbBtoT_fuda3   ;
    be  mov_all_koi_ply_job4    ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_ply_job3_ex

;   push    r1          ;
;   mov.b   #$52,r1         ;札を切る音
;   jsr __mya_se        ;
;   pop r1          ;

mov_all_koi_ply_job3_ex:        ;

    movz.bw wbBtoT_fuda3,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_ply_job4:           ;
    movz.bw wbFuda4_Tim,r2      ;
    mov.b   tMov_All_Fuda4(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_ply_jd1 ;
    cmp.b   #$ff,wbBtoT_fuda4   ;
    be  mov_all_koi_ply_jd1 ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_ply_job4_ex

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

mov_all_koi_ply_job4_ex:

    movz.bw wbBtoT_fuda4,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_ply_jd1:            ;
    movz.bw wbGetIdxP,r2        ;取った札のインデックス
    mov.w   #wbGetFudaP,r3      ;取った札ワーク
    inc.b   wbFuda1_Tim     ;
    cmp.b   #16,wbFuda1_Tim     ;
    bne mov_all_koi_ply_jd2 ;
    cmp.b   #$ff,wbBtoT_fuda1   ;
    be  mov_all_koi_ply_jd2 ;
    mov.b   wbBtoT_fuda1,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda1   ;
    jsr _GetFuda_Shar_SetP  ;
    inc.w   r2          ;
    inc.b   wbGetIdxP       ;
mov_all_koi_ply_jd2:            ;
    inc.b   wbFuda2_Tim     ;
    cmp.b   #20,wbFuda2_Tim     ;
    bne mov_all_koi_ply_jd3 ;
    cmp.b   #$ff,wbBtoT_fuda2   ;
    be  mov_all_koi_ply_jd3 ;
    mov.b   wbBtoT_fuda2,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda2   ;
    jsr _GetFuda_Shar_SetP  ;
    inc.w   r2          ;
    inc.b   wbGetIdxP       ;
mov_all_koi_ply_jd3:            ;
    inc.b   wbFuda3_Tim     ;
    cmp.b   #24,wbFuda3_Tim     ;
    bne mov_all_koi_ply_jd4 ;
    cmp.b   #$ff,wbBtoT_fuda3   ;
    be  mov_all_koi_ply_jd4 ;
    mov.b   wbBtoT_fuda3,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda3   ;
    jsr _GetFuda_Shar_SetP  ;
    inc.w   r2          ;
    inc.b   wbGetIdxP       ;
mov_all_koi_ply_jd4:            ;
    inc.b   wbFuda4_Tim     ;
    cmp.b   #28,wbFuda4_Tim     ;
    bne end_mov_all_koi_ply ;
    cmp.b   #$ff,wbBtoT_fuda4   ;
    be  mov_all_koi_ply_jd_ex   ;
    mov.b   wbBtoT_fuda4,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda4   ;
    jsr _GetFuda_Shar_SetP  ;
    inc.b   wbGetIdxP       ;
mov_all_koi_ply_jd_ex:          ;

;;  jsr waitblk         ;まあ、待てや
;;  jsr waitblk         ;まあ、待てや
;;  jsr waitblk         ;まあ、待てや
;;  jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;
    mov.b   #10,wbActWaitTim    ;ウェイトをかます

end_mov_all_koi_ply:            ;
    popm    #r0-r3/r10      ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札のソート
;-----------------------------------------------------------------------------
srt_pul_koi_ply:            ;
;   pushm   #r15/r16        ;

    dec.b   wbActWaitTim        ;
    bne fin_srt_pul_koi_ply ;

    mov.b   #$00,wbFudaFrmN     ;初期化
    mov.b   #$00,wbFudaFrmP     ;
    mov.b   #$00,wbFudaForN     ;
    mov.b   #$00,wbFudaForP     ;

    mov.b   #$ff,wbMtoB_fuda    ;初期化
    mov.b   #$ff,wbTtoB_fuda    ;
    mov.b   #$ff,wbBtoT_fuda1   ;
    mov.b   #$ff,wbBtoT_fuda2   ;
    mov.b   #$ff,wbBtoT_fuda3   ;
    mov.b   #$ff,wbBtoT_fuda4   ;
    mov.b   #$00,wbBtoT_fudaC   ;

    mov.w   #$00,wBrankFuda     ;初期化
    mov.w   #$00,wBrankFuda+$04 ;
    mov.w   #$00,wBrankFuda+$08 ;

;   mov.w   #wbGetFudaP,r15     ;P取った札のナンバー
;   mov.w   #wbGetIdxP,r16      ;P取った札のインデックス

;   jsr _Get_Fuda_Req       ;移動札を取り札として登録する

    jsr _GetFuda_Sort_SetP  ;
    jsr _GetFuda_Shar_SetP  ;

;   mov.b   #$ff,wbBtoT_fuda1   ;後始末
;   mov.b   #$ff,wbBtoT_fuda2   ;
;   mov.b   #$ff,wbBtoT_fuda3   ;
;   mov.b   #$ff,wbBtoT_fuda4   ;

job_srt_pul_koi_ply:            ;
    jsr _GetFuda_Arg_AgnP   ;

    jsr _GetFuda_Sort_SetC  ;先攻時のダミープロセス
    jsr _GetFuda_Shar_SetC  ;
    jsr _GetFuda_Arg_AgnC   ;

end_srt_pul_koi_ply:            ;
    inc.b   wbKoiDist       ;
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
;   popm    #r15/r16        ;

fin_srt_pul_koi_ply:            ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札の評価
;-----------------------------------------------------------------------------
eva_pul_koi_ply:            ;
    pushm   #r15-r20        ;
    dec.b   wbActWaitTim        ;
    bne end_eva_pul_koi_ply ;

    mov.w   #wbGetFudaP,r15     ;取った札ワークアドレス
    mov.w   #wbYakuJdP,r16      ;出来役判定用カウンターワークAD

    jsr _Huda_val       ;取った札の評価

    mov.w   #wbYakuJdP,r15      ;出来役判定用カウンターワーク
    mov.w   #wbYakuJd2P,r16     ;出来役成立用ワーク(総合)
    mov.w   #wbYakuJd3P,r17     ;出来役成立用ワーク(瞬間)
    mov.w   #wbYakuCnt2P,r18    ;各出来役文数カウンター
    mov.w   #wbYakuCntP,r19     ;総文数カウンター(1回での出来役)
    mov.w   #wbYakuRchP,r20     ;出来役リーチ用ワーク

    jsr _Yaku_val       ;出来役の評価

    inc.b   wbKoiDist       ;
end_eva_pul_koi_ply:            ;

;   mov.b   #$00,wbFudaFrmN     ;初期化
;   mov.b   #$00,wbFudaFrmP     ;
;   mov.b   #$00,wbFudaForN     ;
;   mov.b   #$00,wbFudaForP     ;
;
;   mov.b   #$ff,wbMtoB_fuda    ;初期化
;   mov.b   #$ff,wbTtoB_fuda    ;
;   mov.b   #$ff,wbBtoT_fuda1   ;
;   mov.b   #$ff,wbBtoT_fuda2   ;
;   mov.b   #$ff,wbBtoT_fuda3   ;
;   mov.b   #$ff,wbBtoT_fuda4   ;
;   mov.b   #$00,wbBtoT_fudaC   ;
;
;   mov.w   #$00,wBrankFuda     ;初期化
;   mov.w   #$00,wBrankFuda+$04 ;
;   mov.w   #$00,wBrankFuda+$08 ;
;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;

    popm    #r15-r20        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   瞬間での出来役演出判定
;-----------------------------------------------------------------------------
ini_dir_mom_koi_ply:            ;瞬間での出来役演出判定
    push    r10         ;
    mov.w   #wbYakuJd3P,r10     ;
    test.w  [r10+]          ;
    bne job_ini_dir_mom_koi_ply ;
    test.w  [r10+]          ;
    bne job_ini_dir_mom_koi_ply ;
    test.w  [r10+]          ;
    bne job_ini_dir_mom_koi_ply ;
    add.b   #$06,wbKoiDist      ;成立してないや
    br  end_ini_dir_mom_koi_ply ;
job_ini_dir_mom_koi_ply:        ;
;   mov.b   #$01,wbDPltCk       ;ウインドウのセット
    mov.b   #$00,wbDPltMode     ;
    mov.b   #$01,wbJdKoiKoi     ;コイコイをきく必要性がある
    jsr _DPlate_Man     ;
    inc.b   wbKoiDist       ;
end_ini_dir_mom_koi_ply:        ;
;   dec.b   wbPlyFudaCnt        ;札枚数を減らす
    pop r10         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   瞬間での出来役演出
;-----------------------------------------------------------------------------
dir_mom_koi_ply:            ;
    jsr _DPlate_Man     ;
    test.b  wbDPltCk        ;
    bne end_dir_mom_koi_ply ;
    inc.b   wbKoiDist       ;

    test.b  wbMainTask      ;
    be  end_dir_mom_koi_ply ;

    test.b  wbUpCnt         ;
    bne end_dir_mom_koi_ply ;

    push    r1          ;
    mov.b   #21,r1          ;こいこい後のアップテンポ
    jsr __mya_bgm       ;
    pop r1          ;

    inc.b   wbUpCnt         ;

end_dir_mom_koi_ply:            ;
    rsr             ;
;-----------------------------------------------------------------------------
;   コイコイする?ウインドウ
;-----------------------------------------------------------------------------
win_ask_koi_ply:            ;
    push    r25         ;
    test.b  wbJdKoiKoi      ;
    be  next_win_ask_koi_ply    ;
    test.b  wbPlyFudaCnt        ;
    be  next_win_ask_koi_ply    ;

    mov.b   #$02,wbKoiWindowAction  ;こいこいする?
    jsr Koi_Window      ;
    test.b  r25         ;
    bne end_win_ask_koi_ply ;

next_win_ask_koi_ply:           ;
    inc.b   wbKoiDist       ;
end_win_ask_koi_ply:            ;
    pop r25         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   コイコイの選択
;-----------------------------------------------------------------------------
cho_koi_koi_ply:            ;
    push    r1          ;
    test.b  wbJdKoiKoi      ;
    be  next_cho_koi_koi_ply    ;
    test.b  wbPlyFudaCnt        ;
    be  next_cho_koi_koi_ply    ;

    mov.b   #$00,wbBaCurBusy    ;
    mov.b   #$00,wbBaYNPos      ;

    test.b  wbDipCntrol     ;コンパネ判定
    bne job_cho_koi_koi_ply_KB  ;
job_cho_koi_koi_ply_JS:         ;
    mov.w   #tEsect_Koi_Ok,r1   ;選択セットをリクエスト
    jsr __Esect_Req     ;
    jsr __1PKEY_Init        ;I/O再初期化
    br  job_cho_koi_koi_ply_ex  ;
job_cho_koi_koi_ply_KB:         ;
    mov.w   #tEsect_Koi_Ok2,r1  ;選択セットをリクエスト
    jsr __Esect_Req     ;
job_cho_koi_koi_ply_ex:         ;

    mov.b   #ChoFrzIni,wbFudaMovTim ;選択初期硬直時間の設定
    mov.b   #$02,wbSysCur       ;カーソルをスリープモードに移行

    push    r1          ;
    mov.b   #SE_Msg,r1      ;メッセージウインドウ
    jsr __mya_se        ;
    pop r1          ;

next_cho_koi_koi_ply:           ;
    inc.b   wbKoiDist       ;
end_cho_koi_koi_ply:            ;
    pop r1          ;
    rsr             ;
;-----------------------------------------------------------------------------
;   コイコイのキー入力待ち
;-----------------------------------------------------------------------------
wat_koi_koi_ply:            ;
    push    r15         ;

    mov.b   #$00,wbCurBusy2     ;コンフリクト回避用
    mov.b   #$00,r20        ;処理続行中
    jsr _Sys_tim_gen        ;

    inc.b   wbRandEx1       ;うりゃー、まわせー

    test.b  wbJdKoiKoi      ;
    be  next_wat_koi_koi_ply    ;

    test.b  wbPlyFudaCnt        ;0枚?
    bne ex_wat_koi_koi_ply  ;

    mov.b   #$01,r20        ;タイマーカット
    jsr _Sys_tim_gen        ;

    mov.b   #$00,wbJdKoiKoi     ;
    mov.b   #$01,wbJdKoiEnd     ;
    inc.b   wbKoiDist       ;
    br  next_wat_koi_koi_ply    ;

ex_wat_koi_koi_ply:         ;
    test.b  wbFudaMovTim        ;
    be  job_wat_koi_koi_ply ;
    dec.b   wbFudaMovTim        ;
    mov.b   #$ff,r15        ;
    br  end_wat_koi_koi_ply ;
job_wat_koi_koi_ply:            ;
    test.b  wbDipCntrol     ;コンパネ判定
    bne job_wat_koi_koi_ply_KB  ;
job_wat_koi_koi_ply_JS:         ;
    jsr __1PKEY_JD      ;
    br  A_job_wat_koi_koi_ply   ;
job_wat_koi_koi_ply_KB:         ;
    mov.b   #$ff,r15        ;回避手段
    jsr __KBKEY_JD      ;
    mov.b   #$01,wbBaCurBusy    ;
    mov.b   #$00,wbBaYNPos      ;Y
    cmp.b   #$01,JOY1PKEY       ;
    be  A_job_wat_koi_koi_ply_ex    ;
    mov.b   #$01,wbBaYNPos      ;N
    cmp.b   #14,JOY1PKEY        ;
    be  A_job_wat_koi_koi_ply_ex    ;
    mov.b   #$00,wbBaCurBusy    ;
A_job_wat_koi_koi_ply:          ;
;   mov.b   #$00,wbCurBusy2     ;コンフリクト回避用
;   mov.b   #$00,r20        ;処理続行中
;   jsr _Sys_tim_gen        ;

    test.h  whSysTimDsp     ;キャンセルタイマーチェック
    bne A_job_wat_koi_koi_ply_Ex    ;

    test.b  wbBaYNPos       ;
    be  AY_job_wat_koi_koi_ply  ;
    br  AN_job_wat_koi_koi_ply  ;

;   be  AN_job_wat_koi_koi_ply  ;タイマー切れの場合はNOにする

A_job_wat_koi_koi_ply_Ex:       ;

    test1   #$03,r15        ;
    bne R_job_wat_koi_koi_ply   ;

A_job_wat_koi_koi_ply_ex:       ;

    push    r1          ;
    mov.b   #SE_Dec1,r1     ;決定音
    jsr __mya_se        ;
    pop r1          ;

    test.b  wbBaYNPos       ;
    bne AN_job_wat_koi_koi_ply  ;
AY_job_wat_koi_koi_ply:         ;
    mov.b   #$00,wbJdKoiEnd     ;
    br  AX_job_wat_koi_koi_ply  ;
AN_job_wat_koi_koi_ply:         ;
    mov.b   #$00,wbJdKoiKoi     ;
    mov.b   #$01,wbJdKoiEnd     ;
    inc.b   wbKoiDist       ;
AX_job_wat_koi_koi_ply:         ;
    mov.b   #$01,r20        ;タイマーカット
    jsr _Sys_tim_gen        ;

    mov.b   #$00,wbBaYNPos      ;
    mov.b   #$01,wbBaCurBusy    ;
    br  next_wat_koi_koi_ply    ;
R_job_wat_koi_koi_ply:          ;
    test1   #$04,r15        ;
    bne L_job_wat_koi_koi_ply   ;

    test.b  wbBaYNPos       ;
    bne end_wat_koi_koi_ply ;

    push    r1          ;
    mov.b   #SE_Cur1,r1     ;カーソル移動音
    jsr __mya_se        ;
    pop r1          ;

    mov.b   #$01,wbBaYNPos      ;
    br  end_wat_koi_koi_ply ;
L_job_wat_koi_koi_ply:          ;
    test1   #$05,r15        ;
    bne end_wat_koi_koi_ply ;

    test.b  wbBaYNPos       ;
    be  end_wat_koi_koi_ply ;

    push    r1          ;
    mov.b   #SE_Cur1,r1     ;カーソル移動音
    jsr __mya_se        ;
    pop r1          ;

    mov.b   #$00,wbBaYNPos      ;
    br  end_wat_koi_koi_ply ;
next_wat_koi_koi_ply:           ;
    inc.b   wbKoiDist       ;
end_wat_koi_koi_ply:            ;
    pop r15         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   コイコイしてくれたウインドウ
;-----------------------------------------------------------------------------
win_koi_koi_ply:            ;
    push    r25         ;
    test.b  wbJdKoiKoi      ;
    be  next_win_koi_koi_ply    ;

    mov.b   #$03,wbKoiWindowAction  ;コイコイしてくれてアリガト
    jsr Koi_Window      ;
    test.b  r25         ;
    bne end_win_koi_koi_ply ;

next_win_koi_koi_ply:           ;
;   mov.b   #$01,wbSysCur       ;カーソル解放
    mov.b   #$00,wbJdKoiKoi     ;
    inc.b   wbKoiDist       ;
    inc.b   wbKoiDist       ;
end_win_koi_koi_ply:            ;
    pop r25         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   勝ち負けウインドウ
;-----------------------------------------------------------------------------
win_res_koi_ply:            ;
    push    r25         ;
    test.b  wbJdKoiEnd      ;
    be  next_win_res_koi_ply    ;

    mov.b   #$01,wbRikoSysCk    ;リコ・システムOFF

    mov.b   #$05,wbKoiWindowAction  ;勝ったよぉ
    jsr Koi_Window      ;
    test.b  r25         ;
    bne end_win_res_koi_ply ;

;   mov.b   #$01,wbSysCur       ;カーソル解放
    mov.b   #$00,wbJdKoiEnd     ;

;   mov.b   #$01,wbSPltCk       ;
    mov.b   #$00,wbDPltMode     ;

    mov.b   #24,wbKoiTask       ;集計処理へ
    mov.b   #$00,wbKoiDist      ;
    br  end_win_res_koi_ply ;
next_win_res_koi_ply:           ;
    inc.b   wbKoiDist       ;
end_win_res_koi_ply:            ;
    pop r25         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   後処理
;-----------------------------------------------------------------------------
next_koi_ply:               ;



end_next_koi_ply:           ;
    mov.b   #$00,wbKoiDist      ;
    inc.b   wbKoiTask       ;上位タスクも進める
    rsr             ;
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;   CPUの順番
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
tkoi_cpu_sec:               ;

    dw  init_koi_cpu        ;初期イニシャライズ
    dw  win_str_koi_cpu     ;スタートウインドウ
    dw  src_hit_koi_cpu     ;叩ける札を探す
    dw  ini_TB_koi_cpu      ;手札から場札への移動のイニシャライズ
    dw  mov_TB_koi_cpu      ;手札から場札への移動
    dw  srt_jam_koi_cpu     ;手札の詰め
    dw  src_Ym_koi_cpu      ;山札を探す(回避も含む)
    dw  mag_mby_koi_cpu     ;イカサマint
    dw  opn_Ym_koi_cpu      ;山札のめくり動作
    dw  src2_hit_koi_cpu    ;叩ける札を探す(山札:場札)
    dw  ini_YB_koi_cpu      ;山札から場札への移動のイニシャライズ
    dw  mov_YB_koi_cpu      ;山札から場札への移動
    dw  ini_all_koi_cpu     ;取った札すべての移動のイニシャライズ
    dw  mov_all_koi_cpu     ;取った札すべての移動
    dw  srt_pul_koi_cpu     ;取った札のソート
    dw  eva_pul_koi_cpu     ;取った札の評価
    dw  ini_dir_mom_koi_cpu ;瞬間での出来役演出判定
    dw  dir_mom_koi_cpu     ;瞬間での出来役演出
;   dw  win_ask_koi_cpu     ;コイコイする?ウインドウ
    dw  cho_koi_koi_cpu     ;コイコイの選択
;   dw  wat_koi_koi_cpu     ;コイコイのキー入力待ち
    dw  win_koi_koi_cpu     ;コイコイしてくれたウインドウ
    dw  win_res_koi_cpu     ;勝ち負けウインドウ
    dw  next_koi_cpu        ;後処理

;-----------------------------------------------------------------------------
koi_cpu_sec:                ;CPUセクション
    push    r10         ;
    movz.bw wbKoiDist,r10       ;
    mov.w   tkoi_cpu_sec(r10),r10   ;
    jsr [r10]           ;
    jsr Fuda_Pri_Man        ;
    jsr Fuda_Esect      ;
    pop r10         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   初期イニシャライズ
;-----------------------------------------------------------------------------
init_koi_cpu:               ;

;   jsr _init_Get_Fuda      ;「取った札」用ワークの初期化
;   jsr _Yaku_val_init      ;出来役評価用ワークの初期化

    mov.b   #$00,wbJdKoiKoi     ;
    mov.b   #$00,wbJdKoiEnd     ;

    inc.b   wbKoiDist       ;
    rsr             ;
;-----------------------------------------------------------------------------
;   スタートウインドウ
;-----------------------------------------------------------------------------
win_str_koi_cpu:            ;
    push    r25         ;
    cmp.b   #$08,wbCpuFudaCnt   ;初回判定
    bne next_win_str_koi_cpu    ;

    test1   #$00,wbKoiOrd       ;
    be  next_win_str_koi_cpu    ;

    mov.b   #$01,wbKoiWindowAction  ;スタートウインドウ
    jsr Koi_Window      ;
    test.b  r25         ;
    bne end_win_str_koi_cpu ;

next_win_str_koi_cpu:           ;
    inc.b   wbKoiDist       ;
end_win_str_koi_cpu:            ;
    pop r25         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   叩ける札を探す
;-----------------------------------------------------------------------------
src_hit_koi_cpu:            ;
    pushm   #r10/r15-r18/r20    ;

    mov.w   #wCpu_Tehuda,r10    ;

    jsr _init_Hit_Ok        ;札ヒットワークの初期化

    mov.b   #$00,wbFudaFrmN     ;初期化
    mov.b   #$00,wbFudaFrmP     ;
    mov.b   #$00,wbFudaForN     ;
    mov.b   #$00,wbFudaForP     ;

    mov.b   #$ff,wbMtoB_fuda    ;初期化
    mov.b   #$ff,wbTtoB_fuda    ;
    mov.b   #$ff,wbBtoT_fuda1   ;
    mov.b   #$ff,wbBtoT_fuda2   ;
    mov.b   #$ff,wbBtoT_fuda3   ;
    mov.b   #$ff,wbBtoT_fuda4   ;
    mov.b   #$00,wbBtoT_fudaC   ;

    mov.w   #$00,wBrankFuda     ;初期化
    mov

u27.bin#

60400:

    __mEsect_Init3  000,$200                ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  060,_G02_IvtBG03_09,__G02_IvtBG03_09    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $080,$200               ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  060,_G02_IvtBG03_10,__G02_IvtBG03_10    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $100,$200               ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  060,_G02_IvtBG03_11,__G02_IvtBG03_11    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $150,$200               ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス
; 本体
    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  059,_G02_Ivt03_00,__G02_Ivt03_00    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  000,000                 ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  059,_G02_Ivt03_01,__G02_Ivt03_01    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $080,000                ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  059,_G02_Ivt03_02,__G02_Ivt03_02    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $100,000                ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  059,_G02_Ivt03_03,__G02_Ivt03_03    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $150,000                ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  059,_G02_Ivt03_04,__G02_Ivt03_04    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  000,$100                ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  059,_G02_Ivt03_05,__G02_Ivt03_05    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $080,$100               ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  059,_G02_Ivt03_06,__G02_Ivt03_06    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $100,$100               ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Init1  __EsectIventMovParts            ;実行プログラム名
    __mEsect_Init2  059,_G02_Ivt03_07,__G02_Ivt03_07    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  $150,$100               ;H、V
    __mEsect_Init4  tMov_G02_Ivnt31,000         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    __mEsect_Initr10](r17)      ;手札内からの登録抹消
    movt.wb r17,wbFudaFrmP      ;叩く側(捨てる) 札インデックス
    mov.b   #$ff,wbFudaForN     ;エラーを起こさせる
    jsr _Bahuda_Emp     ;場札の空き場所を探す
    mov.b   r20,wbFudaForP      ;叩く側(捨てる) 札インデックス
    br  end_src_hit_koi_cpu ;
sig_src_hit_koi_cpu:            ;
    mov.b   #$01,wbFudaMd       ;モードの設定
    mov.b   r15,wbFudaFrmN      ;叩く側(捨てる) 札ナンバー
    mov.b   r15,wbBtoT_fuda2    ;手札移動登録
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   #$ff,[r10](r17)     ;手札内からの登録抹消
    movt.wb r17,wbFudaFrmP      ;叩く側(捨てる) 札インデックス
    mov.b   r16,wbFudaForN      ;叩かれ側 札ナンバー
    mov.b   r16,wbBtoT_fuda4    ;手札に叩かれ移動登録
    inc.b   wbBtoT_fudaC        ;カウントする
    movt.wb r18,wbFudaForP      ;叩かれ側 札インデックス
    movt.wb r18,r20         ;
    jsr _Del_Bafuda     ;場札登録の抹消
end_src_hit_koi_cpu:            ;
    inc.b   wbKoiDist       ;
    popm    #r10/r15-r18/r20    ;
    rsr             ;
;-----------------------------------------------------------------------------
;   手札から場札への移動のイニシャライズ
;-----------------------------------------------------------------------------
ini_TB_koi_cpu:             ;
    pushm   #r0/r10-r14/r21-r22 ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー

    mov.w   #wFuda,r11      ;
    mov.w   r0,r12          ;札を表に開く
    shl.w   #$05,r12        ;
    add.w   r11,r12         ;
    mov.b   #$04,_Fuda_dsp[r12] ;

    movz.bw wbFudaFrmP,r11      ;叩く側(捨てる) 札インデックス
    movz.bw wbFudaForN,r12      ;叩かれ側 札ナンバー
    movz.bw wbFudaForP,r13      ;叩かれ側 札インデックス
    mov.w   #wFuda,r14      ;札ワーク
    test.b  wbFudaMd        ;
    bne get_ini_TB_koi_cpu  ;
give_ini_TB_koi_cpu:            ;場に捨てる場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos1(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos1(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
    br  end_ini_TB_koi_cpu  ;
get_ini_TB_koi_cpu:         ;札を叩く場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos2(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos2(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
end_ini_TB_koi_cpu:         ;
    inc.b   wbKoiDist       ;
    mov.b   #16,wbFudaMovTim    ;札移動タイマーをセット

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

    popm    #r0/r10-r14/r21-r22 ;
    rsr             ;
;-----------------------------------------------------------------------------
;   手札から場札への移動
;-----------------------------------------------------------------------------
mov_TB_koi_cpu:             ;
    pushm   #r0/r10/r11     ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    mov.w   #wFuda,r11      ;札ワーク
    shl.w   #$05,r0         ;
    add.w   r11,r0          ;
    jsr _fuda_ptp_mov       ;
    dec.b   wbFudaMovTim        ;
    bnz end_mov_TB_koi_cpu  ;
next_mov_TB_koi_cpu:            ;
    cmp.b   #$ff,wbTtoB_fuda    ;
    bne next_mov_TB_koi_cpu_ex  ;

    push    r1          ;
    mov.b   #SE_FHit2,r1        ;ひっくり返す音後半
    jsr __mya_se        ;
    pop r1          ;

    br  next2_mov_TB_koi_cpu    ;

next_mov_TB_koi_cpu_ex:         ;

    push    r1          ;
    mov.b   #SE_FHit1,r1        ;札を置く
    jsr __mya_se        ;
    pop r1          ;

    mov.w   #wBa_huda,r0        ;
    movz.bw wbFudaForP,r11      ;
    mov.b   wbTtoB_fuda,[r0](r11)   ;
    mov.b   #$ff,wbTtoB_fuda    ;

next2_mov_TB_koi_cpu:           ;

    inc.b   wbKoiDist       ;
end_mov_TB_koi_cpu:         ;
    popm    #r0/r10/r11     ;
    rsr             ;
;-----------------------------------------------------------------------------
;   手札の詰め
;-----------------------------------------------------------------------------
srt_jam_koi_cpu:            ;
    jsr _Fuda_Mon_SortC     ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
end_srt_jam_koi_cpu:            ;
    mov.b   #$00,wbKoiDist2_tim ;
    add.h   #26,whGetFudaBMaxC  ;役札のMAXが増える

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
    inc.b   wbKoiDist       ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札を探す(回避も含む)
;-----------------------------------------------------------------------------
src_Ym_koi_cpu:             ;
    pushm   #r10/r20        ;
    dec.b   wbActWaitTim        ;
    bne end_src_Ym_koi_cpu  ;
    jsr _Ba_Brk_Cnt     ;ブランクのカウント
    cmp.b   #$01,r20        ;1枚以下なら
    ble ex_src_Ym_koi_cpu   ;イカサマする
job_src_Ym_koi_cpu:         ;
    jsr _Bahuda_Emp     ;空き場所を探す
    cmp.b   #$ff,r20        ;空きがないよ
    be  ex_src_Ym_koi_cpu   ;
    add.b   #$02,wbKoiDist      ;イカサマintは無し
    jsr _Mak_Yamafuda       ;
    mov.b   r20,wbMtoB_fuda     ;めくり札に登録
    movz.bw r20,r10         ;札ナンバー
    mov.w   #$ff,r20        ;予定は未定
    jsr _fuda_req       ;札のリクエスト

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    push    r1          ;
    mov.b   #SE_FRol,r1     ;ひっくり返すときの音
    jsr __mya_se        ;
    pop r1          ;

    br  end_src_Ym_koi_cpu  ;
ex_src_Ym_koi_cpu:          ;イカサマの準備

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;イカサマしないといけないよ
end_src_Ym_koi_cpu:         ;
    popm    #r10/r20        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   イカサマint
;-----------------------------------------------------------------------------
mag_mby_koi_cpu:            ;
    pushm   #r16-r17/r20        ;
    mov.w   #$00,r20        ;
    mov.w   #12,r16         ;
loop_mag_mby_koi_cpu:           ;
    jsr _Koi_Ark_m00        ;
    test.b  r17         ;
    bnz end_mag_mby_koi_cpu ;
    inc.w   r20         ;
    dec.w   r16         ;
    bnz loop_mag_mby_koi_cpu    ;
    jsr Reset           ;致命的エラーなのでリセット
end_mag_mby_koi_cpu:            ;

    push    r1          ;
    mov.b   #SE_FRol,r1     ;ひっくり返すときの音
    jsr __mya_se        ;
    pop r1          ;

    jsr _Mak_Yamafuda       ;
    mov.b   r20,wbMtoB_fuda     ;めくり札に登録
    movz.bw r20,r10         ;札ナンバー
    mov.w   #$ff,r20        ;予定は未定
    jsr _fuda_req       ;札のリクエスト

    inc.b   wbKoiDist       ;
    popm    #r16-r17/r20        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札のめくり動作
;-----------------------------------------------------------------------------
opn_Ym_koi_cpu:             ;
    pushm   #r10-r12        ;

    mov.w   #wFuda,r10      ;
    movz.bw wbMtoB_fuda,r11     ;めくり札
    shl.w   #$05,r11        ;
    add.w   r10,r11         ;目的ワークの先頭
    movz.bw wbKoiDist2_tim,r12  ;
    mov.b   tOpen__Fuda_Rot(r12),_Fuda_dsp[r11] ;
    inc.b   wbKoiDist2_tim      ;
    cmp.b   #10,wbKoiDist2_tim  ;
    bne end_opn_Ym_koi_cpu  ;
    inc.b   wbKoiDist       ;

    jsr _init_Hit_Ok        ;

    mov.b   #$00,wbFudaFrmN     ;初期化
    mov.b   #$00,wbFudaFrmP     ;
    mov.b   #$00,wbFudaForN     ;
    mov.b   #$00,wbFudaForP     ;

    mov.b   #$ff,wbTtoB_fuda    ;

end_opn_Ym_koi_cpu:         ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    popm    #r10-r12        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   叩ける札を探す(山札:場札)
;-----------------------------------------------------------------------------
src2_hit_koi_cpu:           ;叩ける札を探す(山札:場札)
    push    r20         ;
    jsr _Eva2_hit_jd        ;めくり札のヒット評価
    test.b  wbHitCkB        ;
    be  give_src2_hit_koi_cpu   ;叩けない
    cmp.b   #$01,wbHitCkB       ;
    be  sig_src2_hit_koi_cpu    ;1枚叩ける
    cmp.b   #$02,wbHitCkB       ;
    be  dbl_src2_hit_koi_cpu    ;2枚叩ける
    nop             ;場に3枚以上存在する場合は、
    nop             ;とばない様に(すり抜けさせる様に)、
    nop             ;一時的に設定しておく
    nop             ;
give_src2_hit_koi_cpu:          ;場に捨てるとき
    mov.b   #$00,wbFudaMd       ;モードの設定
    jsr _Bahuda_Emp     ;空き場所を探す
    mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー

    mov.b   wbMtoB_fuda,wbTtoB_fuda     ;

    mov.b   #$00,wbFudaFrmP     ;1種類だけだから
    mov.b   #$ff,wbFudaForN     ;エラーを起こさせる
    mov.b   r20,wbFudaForP      ;叩かれ側 札インデックス
    br  end_src2_hit_koi_cpu    ;
sig_src2_hit_koi_cpu:           ;
    mov.b   #$01,wbFudaMd       ;モードの設定
    mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー
    mov.b   wbMtoB_fuda,wbBtoT_fuda1    ;叩くやつ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   #$00,wbFudaFrmP     ;1種類だけだから
    mov.b   wbHitOkB,wbFudaForN ;叩かれ側 札ナンバー
    mov.b   wbHitOkB,wbBtoT_fuda3   ;起き札に叩かれるヤツ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   wbHitPsB,wbFudaForP ;叩かれ側 札インデックス
    mov.b   wbHitPsB,r20        ;
    jsr _Del_Bafuda     ;場札登録の抹消
    br  end_src2_hit_koi_cpu    ;
dbl_src2_hit_koi_cpu:           ;
    mov.b   #$02,wbFudaMd       ;モードの設定
;   mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー
;   mov.b   wbMtoB_fuda,wbBtoT_fuda1    ;叩くヤツ
;   inc.b   wbBtoT_fudaC        ;カウントする
;   mov.b   #$00,wbFudaFrmP     ;1種類だけだから

    mov.b   wbMtoB_fuda,wbFudaFrmN  ;叩く側(捨てる) 札ナンバー
    mov.b   wbMtoB_fuda,wbBtoT_fuda1    ;叩くやつ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   #$00,wbFudaFrmP     ;1種類だけだから
    mov.b   wbHitOkB,wbFudaForN ;叩かれ側 札ナンバー
    mov.b   wbHitOkB,wbBtoT_fuda3   ;起き札に叩かれるヤツ
    inc.b   wbBtoT_fudaC        ;カウントする
    mov.b   wbHitPsB,wbFudaForP ;叩かれ側 札インデックス
    mov.b   wbHitPsB,r20        ;
    jsr _Del_Bafuda     ;場札登録の抹消

end_src2_hit_koi_cpu:           ;
    mov.b   #$ff,wbMtoB_fuda    ;起き札登録の抹消
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
    inc.b   wbKoiDist       ;
    pop r20         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札から場札への移動のイニシャライズ
;-----------------------------------------------------------------------------
ini_YB_koi_cpu:             ;山札から場札への移動のイニシャライズ
    pushm   #r0/r10-r14/r21-r22 ;
    dec.b   wbActWaitTim        ;
    bne fin_ini_YB_koi_cpu  ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    movz.bw wbFudaFrmP,r11      ;叩く側(捨てる) 札インデックス
    movz.bw wbFudaForN,r12      ;叩かれ側 札ナンバー
    movz.bw wbFudaForP,r13      ;叩かれ側 札インデックス
    mov.w   #wFuda,r14      ;札ワーク
    test.b  wbFudaMd        ;
    bne get_ini_YB_koi_cpu  ;
give_ini_YB_koi_cpu:            ;場に捨てる場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos1(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos1(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
    br  end_ini_YB_koi_cpu  ;
get_ini_YB_koi_cpu:         ;札を叩く場合
    shl.w   #$05,r0         ;1つ32バイトだから
    add.w   r14,r0          ;
    shl.w   #$01,r13        ;
    mov.h   tBahudaPos2(r13),r21    ;目標H
    inc.w   r13         ;
    mov.h   tBahudaPos2(r13),r22    ;目標V
    jsr _fuda_ptp_mov_init  ;
end_ini_YB_koi_cpu:         ;

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;
    mov.b   #16,wbFudaMovTim    ;札移動タイマーをセット
fin_ini_YB_koi_cpu:         ;
    popm    #r0/r10-r14/r21-r22 ;
    rsr             ;
;-----------------------------------------------------------------------------
;   山札から場札への移動
;-----------------------------------------------------------------------------
mov_YB_koi_cpu:             ;
    pushm   #r0/r10/r11     ;
;   jsr Fuda_Esect      ;
    movz.bw wbFudaFrmN,r0       ;叩く側(捨てる) 札ナンバー
    mov.w   #wFuda,r11      ;札ワーク
    shl.w   #$05,r0         ;
    add.w   r11,r0          ;
    jsr _fuda_ptp_mov       ;
    dec.b   wbFudaMovTim        ;
    bnz end_mov_YB_koi_cpu  ;
next_mov_YB_koi_cpu:            ;
    cmp.b   #$ff,wbTtoB_fuda    ;
    bne next_mov_YB_koi_cpu_ex  ;

    push    r1          ;
    mov.b   #SE_FHit2,r1        ;ひっくり返す音後半
    jsr __mya_se        ;
    pop r1          ;

    br  next2_mov_YB_koi_cpu    ;

next_mov_YB_koi_cpu_ex:         ;

    push    r1          ;
    mov.b   #SE_FHit1,r1        ;札を置く
    jsr __mya_se        ;
    pop r1          ;

    mov.w   #wBa_huda,r0        ;
    movz.bw wbFudaForP,r11      ;
    mov.b   wbTtoB_fuda,[r0](r11)   ;
    mov.b   #$ff,wbTtoB_fuda    ;

next2_mov_YB_koi_cpu:           ;
    inc.b   wbKoiDist       ;
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
end_mov_YB_koi_cpu:         ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    popm    #r0/r10/r11     ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札すべての移動のイニシャライズ
;-----------------------------------------------------------------------------
ini_all_koi_cpu:            ;取った札すべての移動のイニシャライズ
    pushm   #r0/r10-r16/r21-r22 ;

    dec.b   wbActWaitTim        ;
    bne fin_ini_all_koi_cpu ;

    mov.b   #$00,wbFuda1_Tim    ;タイマー初期化
    mov.b   #$00,wbFuda2_Tim    ;
    mov.b   #$00,wbFuda3_Tim    ;
    mov.b   #$00,wbFuda4_Tim    ;

    mov.w   #wbGetFudaC,r10     ;ワーク
    jsr _Fuda_Shar_Cnt      ;カウントしてみる
    jsr _init_GetFuda_PosC  ;ポジションの割り出し

job1_ini_all_koi_cpu:           ;
    movz.bw wbBtoT_fuda1,r1     ;
    cmp.w   #$ff,r1         ;
    be  job2_ini_all_koi_cpu    ;
    jsr _init_GetFuda_SetC  ;
job2_ini_all_koi_cpu:           ;
    movz.bw wbBtoT_fuda2,r1     ;
    cmp.w   #$ff,r1         ;
    be  job3_ini_all_koi_cpu    ;
    jsr _init_GetFuda_SetC  ;
job3_ini_all_koi_cpu:           ;
    movz.bw wbBtoT_fuda3,r1     ;
    cmp.w   #$ff,r1         ;
    be  job4_ini_all_koi_cpu    ;
    jsr _init_GetFuda_SetC  ;
job4_ini_all_koi_cpu:           ;
    movz.bw wbBtoT_fuda4,r1     ;
    cmp.w   #$ff,r1         ;
    be  end_ini_all_koi_cpu ;
    jsr _init_GetFuda_SetC  ;

end_ini_all_koi_cpu:            ;

;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや
;   jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;
fin_ini_all_koi_cpu:            ;
    popm    #r0/r10-r16/r21-r22 ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札すべての移動
;-----------------------------------------------------------------------------
mov_all_koi_cpu:            ;
    pushm   #r0-r3/r10      ;
    mov.w   #wFuda,r1       ;
mov_all_koi_cpu_job1:           ;
    movz.bw wbFuda1_Tim,r2      ;
    mov.b   tMov_All_Fuda1(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_cpu_job2    ;
    cmp.b   #$ff,wbBtoT_fuda1   ;
    be  mov_all_koi_cpu_job2    ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_cpu_job1_ex

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

mov_all_koi_cpu_job1_ex:

    movz.bw wbBtoT_fuda1,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_cpu_job2:           ;
    movz.bw wbFuda2_Tim,r2      ;
    mov.b   tMov_All_Fuda2(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_cpu_job3    ;
    cmp.b   #$ff,wbBtoT_fuda2   ;
    be  mov_all_koi_cpu_job3    ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_cpu_job2_ex

;   push    r1          ;
;   mov.b   #$52,r1         ;札を切る音
;   jsr __mya_se        ;
;   pop r1          ;

mov_all_koi_cpu_job2_ex:

    movz.bw wbBtoT_fuda2,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_cpu_job3:           ;
    movz.bw wbFuda3_Tim,r2      ;
    mov.b   tMov_All_Fuda3(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_cpu_job4    ;
    cmp.b   #$ff,wbBtoT_fuda3   ;
    be  mov_all_koi_cpu_job4    ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_cpu_job3_ex

;   push    r1          ;
;   mov.b   #$52,r1         ;札を切る音
;   jsr __mya_se        ;
;   pop r1          ;

mov_all_koi_cpu_job3_ex:

    movz.bw wbBtoT_fuda3,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_cpu_job4:           ;
    movz.bw wbFuda4_Tim,r2      ;
    mov.b   tMov_All_Fuda4(r2),r3   ;
    test.b  r3          ;
    be  mov_all_koi_cpu_jd1 ;
    cmp.b   #$ff,wbBtoT_fuda4   ;
    be  mov_all_koi_cpu_jd1 ;

    cmp.b   #$02,r3         ;
    bne mov_all_koi_cpu_job4_ex

    push    r1          ;
    mov.b   #SE_FCut,r1     ;札を切る音
    jsr __mya_se        ;
    pop r1          ;

mov_all_koi_cpu_job4_ex:

    movz.bw wbBtoT_fuda4,r10    ;
    shl.w   #$05,r10        ;
    add.w   r1,r10          ;
    mov.w   r10,r0          ;
    jsr _fuda_ptp_mov       ;
mov_all_koi_cpu_jd1:            ;
    movz.bw wbGetIdxC,r2        ;取った札のインデックス
    mov.w   #wbGetFudaC,r3      ;取った札ワーク
    inc.b   wbFuda1_Tim     ;
    cmp.b   #16,wbFuda1_Tim     ;
    bne mov_all_koi_cpu_jd2 ;
    cmp.b   #$ff,wbBtoT_fuda1   ;
    be  mov_all_koi_cpu_jd2 ;
    mov.b   wbBtoT_fuda1,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda1   ;
;   jsr _GetFuda_Shar_SetC  ;
    inc.w   r2          ;
    inc.b   wbGetIdxC       ;
mov_all_koi_cpu_jd2:            ;
    inc.b   wbFuda2_Tim     ;
    cmp.b   #20,wbFuda2_Tim     ;
    bne mov_all_koi_cpu_jd3 ;
    cmp.b   #$ff,wbBtoT_fuda2   ;
    be  mov_all_koi_cpu_jd3 ;
    mov.b   wbBtoT_fuda2,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda2   ;
;   jsr _GetFuda_Shar_SetC  ;
    inc.w   r2          ;
    inc.b   wbGetIdxC       ;
mov_all_koi_cpu_jd3:            ;
    inc.b   wbFuda3_Tim     ;
    cmp.b   #24,wbFuda3_Tim     ;
    bne mov_all_koi_cpu_jd4 ;
    cmp.b   #$ff,wbBtoT_fuda3   ;
    be  mov_all_koi_cpu_jd4 ;
    mov.b   wbBtoT_fuda3,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda3   ;
;   jsr _GetFuda_Shar_SetC  ;
    inc.w   r2          ;
    inc.b   wbGetIdxC       ;
mov_all_koi_cpu_jd4:            ;
    inc.b   wbFuda4_Tim     ;
    cmp.b   #28,wbFuda4_Tim     ;
    bne end_mov_all_koi_cpu ;
    cmp.b   #$ff,wbBtoT_fuda4   ;
    be  mov_all_koi_cpu_jd_ex   ;
    mov.b   wbBtoT_fuda4,[r3](r2)   ;
    mov.b   #$ff,wbBtoT_fuda4   ;
;   jsr _GetFuda_Shar_SetC  ;
    inc.w   r2          ;
    inc.b   wbGetIdxC       ;
mov_all_koi_cpu_jd_ex:          ;

;;  jsr waitblk         ;まあ、待てや
;;  jsr waitblk         ;まあ、待てや
;;  jsr waitblk         ;まあ、待てや
;;  jsr waitblk         ;まあ、待てや

    inc.b   wbKoiDist       ;
    mov.b   #10,wbActWaitTim    ;ウェイトをかます
end_mov_all_koi_cpu:            ;
;   jsr Fuda_Pri_Man        ;
;   jsr Fuda_Esect      ;
    popm    #r0-r3/r10      ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札のソート
;-----------------------------------------------------------------------------
srt_pul_koi_cpu:            ;
;   pushm   #r15/r16        ;

    dec.b   wbActWaitTim        ;
    bne end_srt_pul_koi_cpu ;

;   mov.w   #wbGetFudaC,r15     ;P取った札のナンバー
;   mov.w   #wbGetIdxC,r16      ;P取った札のインデックス

;   jsr _Get_Fuda_Req       ;移動札を取り札として登録する

    jsr _GetFuda_Sort_SetC  ;

    jsr _GetFuda_Shar_SetC  ;

;   mov.b   #$ff,wbBtoT_fuda1   ;後始末
;   mov.b   #$ff,wbBtoT_fuda2   ;
;   mov.b   #$ff,wbBtoT_fuda3   ;
;   mov.b   #$ff,wbBtoT_fuda4   ;

    jsr _GetFuda_Arg_AgnC   ;

    mov.b   #$00,wbFudaFrmN     ;初期化
    mov.b   #$00,wbFudaFrmP     ;
    mov.b   #$00,wbFudaForN     ;
    mov.b   #$00,wbFudaForP     ;

    mov.b   #$ff,wbMtoB_fuda    ;初期化
    mov.b   #$ff,wbTtoB_fuda    ;
    mov.b   #$ff,wbBtoT_fuda1   ;
    mov.b   #$ff,wbBtoT_fuda2   ;
    mov.b   #$ff,wbBtoT_fuda3   ;
    mov.b   #$ff,wbBtoT_fuda4   ;
    mov.b   #$00,wbBtoT_fudaC   ;

    mov.w   #$00,wBrankFuda     ;初期化
    mov.w   #$00,wBrankFuda+$04 ;
    mov.w   #$00,wBrankFuda+$08 ;

    inc.b   wbKoiDist       ;
    mov.b   #_ActWaitTim,wbActWaitTim   ;ウェイトをかます
end_srt_pul_koi_cpu:            ;
;   popm    #r15/r16        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   取った札の評価
;-----------------------------------------------------------------------------
eva_pul_koi_cpu:            ;
    pushm   #r15-r20        ;

    dec.b   wbActWaitTim        ;
    bne end_eva_pul_koi_cpu ;

    mov.w   #wbGetFudaC,r15     ;取った札ワークアドレス
    mov.w   #wbYakuJdC,r16      ;出来役判定用カウンターワークAD

    jsr _Huda_val       ;取った札の評価

    mov.w   #wbYakuJdC,r15      ;出来役判定用カウンターワーク
    mov.w   #wbYakuJd2C,r16     ;出来役成立用ワーク(総合)
    mov.w   #wbYakuJd3C,r17     ;出来役成立用ワーク(瞬間)
    mov.w   #wbYakuCnt2C,r18    ;各出来役文数カウンター
    mov.w   #wbYakuCntC,r19     ;総文数カウンター(1回での出来役)
    mov.w   #wbYakuRchC,r20     ;出来役リーチ用ワーク

    jsr _Yaku_val       ;出来役の評価

    inc.b   wbKoiDist       ;
end_eva_pul_koi_cpu:            ;
    popm    #r15-r20        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   瞬間での出来役演出判定
;-----------------------------------------------------------------------------
ini_dir_mom_koi_cpu:            ;瞬間での出来役演出判定
    push    r10         ;
    mov.w   #wbYakuJd3C,r10     ;
    test.w  [r10+]          ;
    bne job_ini_dir_mom_koi_cpu ;
    test.w  [r10+]          ;
    bne job_ini_dir_mom_koi_cpu ;
    test.w  [r10+]          ;
    bne job_ini_dir_mom_koi_cpu ;
    add.b   #$04,wbKoiDist      ;
    br  end_ini_dir_mom_koi_cpu ;
job_ini_dir_mom_koi_cpu:        ;
;   mov.b   #$01,wbDPltCk       ;
    mov.b   #$01,wbDPltMode     ;
    jsr _DPlate_Man     ;
    mov.b   #$01,wbJdKoiKoi     ;コイコイをきく必要性がある
    inc.b   wbKoiDist       ;
end_ini_dir_mom_koi_cpu:        ;
    dec.b   wbCpuFudaCnt        ;札枚数を減らす
    pop r10         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   瞬間での出来役演出
;-----------------------------------------------------------------------------
dir_mom_koi_cpu:            ;
    jsr _DPlate_Man     ;
    test.b  wbDPltCk        ;
    bne end_dir_mom_koi_cpu ;
    inc.b   wbKoiDist       ;

    test.b  wbMainTask      ;
    be  end_dir_mom_koi_cpu ;

    test.b  wbUpCnt         ;
    bne end_dir_mom_koi_cpu ;

    push    r1          ;
    mov.b   #21,r1          ;こいこい後のアップテンポ
    jsr __mya_bgm       ;
    pop r1          ;

    inc.b   wbUpCnt         ;

end_dir_mom_koi_cpu:            ;
    rsr             ;
;;-----------------------------------------------------------------------------
;;  コイコイする?ウインドウ
;;-----------------------------------------------------------------------------
;win_ask_koi_cpu:           ;
;   inc.b   wbKoiDist       ;
;   rsr             ;
;-----------------------------------------------------------------------------
;   コイコイの選択
;-----------------------------------------------------------------------------
cho_koi_koi_cpu:            ;
    push    r10         ;
    test.b  wbCpuFudaCnt        ;
    be  ex_cho_koi_koi_cpu  ;
    movz.bw wbPerNo,r10     ;
    mov.b   tJD_Cpu_KoiKoi(r10),r10 ;
    cmp.b   r10,wbCpuFudaCnt    ;多い場合は、
    bh  end_cho_koi_koi_cpu ;こいこいします
    mov.b   #$01,wbJdKoiEnd     ;こいこいしない
    mov.b   #$00,wbJdKoiKoi     ;
    inc.b   wbKoiDist       ;
    br  end_cho_koi_koi_cpu ;
ex_cho_koi_koi_cpu:         ;最後の1枚の時は、
    mov.b   #$01,wbJdKoiEnd     ;こいこいしない
    mov.b   #$00,wbJdKoiKoi     ;
    inc.b   wbKoiDist       ;
end_cho_koi_koi_cpu:            ;
    inc.b   wbKoiDist       ;
    pop r10         ;
    rsr             ;
;;-----------------------------------------------------------------------------
;;  コイコイのキー入力待ち
;;-----------------------------------------------------------------------------
;wat_koi_koi_cpu:           ;
;   inc.b   wbKoiDist       ;
;   rsr             ;
;-----------------------------------------------------------------------------
;   コイコイしてくれたウインドウ
;-----------------------------------------------------------------------------
win_koi_koi_cpu:            ;
    push    r25         ;
    test.b  wbJdKoiKoi      ;
    be  next_win_koi_koi_cpu    ;

    mov.b   #$04,wbKoiWindowAction  ;こいこいするよ
    jsr Koi_Window      ;
    test.b  r25         ;
    bne end_win_koi_koi_cpu ;

next_win_koi_koi_cpu:           ;
    mov.b   #$00,wbJdKoiKoi     ;
    inc.b   wbKoiDist       ;
end_win_koi_koi_cpu:            ;
    pop r25         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   勝ち負けウインドウ
;-----------------------------------------------------------------------------
win_res_koi_cpu:            ;
    push    r25         ;
    test.b  wbJdKoiEnd      ;
    be  next_win_res_koi_cpu    ;

    mov.b   #$01,wbRikoSysCk    ;リコ・システムOFF

    mov.b   #$06,wbKoiWindowAction  ;勝ったよぉ
    jsr Koi_Window      ;
    test.b  r25         ;
    bne end_win_res_koi_cpu ;

    mov.b   #$00,wbJdKoiEnd     ;

;   mov.b   #$01,wbSPltCk       ;
    mov.b   #$01,wbDPltMode     ;

    mov.b   #24,wbKoiTask       ;集計処理へ
    mov.b   #$00,wbKoiDist      ;
    br  end_win_res_koi_cpu ;

next_win_res_koi_cpu:           ;
    inc.b   wbKoiDist       ;
end_win_res_koi_cpu:            ;
    pop r25         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   後処理
;-----------------------------------------------------------------------------
next_koi_cpu:               ;
    mov.b   #$00,wbKoiDist      ;
    inc.b   wbKoiTask       ;上位タスクも進める
    rsr             ;
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;   究極の選択           ;
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
t_koi_ex_sum:               ;

    dw  Init_koi_ex_sum     ;
    dw  JobD_koi_ex_sum     ;
    dw  JobS_koi_ex_sum     ;
    dw  End_koi_ex_sum      ;

koi_ex_sum:             ;
    push    r10         ;
    movz.bw wbKoiDist,r10       ;
    mov.w   t_koi_ex_sum(r10),r10   ;
    jsr [r10]           ;
    pop r10         ;
    rsr             ;
;-----------------------------------------------------------------------------
Init_koi_ex_sum:            ;
    test1   #$00,wbKoiOrd       ;
    bne jdC_Init_koi_ex_sum ;
jdP_Init_koi_ex_sum:            ;
    mov.b   #$01,wbYakuOya      ;
    mov.b   #$01,wbRikoSysCk    ;リコ・システムOFF
;   mov.b   #$01,wbDPltCk       ;ウインドウのセット
    mov.b   #$00,wbDPltMode     ;
    jsr _DPlate_Man     ;
    br  end_Init_koi_ex_sum ;
jdC_Init_koi_ex_sum:            ;
    mov.b   #$02,wbYakuOya      ;
    mov.b   #$01,wbRikoSysCk    ;リコ・システムOFF
;   mov.b   #$01,wbDPltCk       ;
    mov.b   #$01,wbDPltMode     ;
    jsr _DPlate_Man     ;
end_Init_koi_ex_sum:            ;
    inc.b   wbKoiDist       ;
    rsr             ;
;-----------------------------------------------------------------------------
JobD_koi_ex_sum:            ;
    jsr _DPlate_Man     ;
    test.b  wbDPltCk        ;
    bne end_JobD_koi_ex_sum ;
next_JobD_koi_ex_sum:           ;
    inc.b   wbKoiDist       ;
end_JobD_koi_ex_sum:            ;
    rsr             ;
;-----------------------------------------------------------------------------
JobS_koi_ex_sum:            ;

    jsr __mya_bgm_stp       ;演奏停止
    jsr __mya_se_stp        ;SE停止
    jsr Kill_Se_Man     ;SEバッファークリアー
    jsr __mya_bgm_stp       ;演奏停止

    inc.b   wbKoiDist       ;
    rsr             ;
;-----------------------------------------------------------------------------
End_koi_ex_sum:             ;
    test1   #$00,wbKoiOrd       ;
    bne jobC_End_koi_ex_sum ;
jobP_End_koi_ex_sum:            ;
;   mov.b   #$01,wbSPltCk       ;
    mov.b   #$00,wbDPltMode     ;
    br  next_end_End_koi_ex_sum ;
jobC_End_koi_ex_sum:            ;
;   mov.b   #$01,wbSPltCk       ;
    mov.b   #$01,wbDPltMode     ;
next_end_End_koi_ex_sum:        ;
    mov.b   #$00,wbKoiDist      ;
    inc.b   wbKoiTask       ;
end_End_koi_ex_sum:         ;
    rsr             ;
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;   集計タ~~~~イム
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
tkoi_scr_sum:               ;

    dw  init_koi_scr_sum    ;前処理
    dw  ent_koi_scr_sum     ;ウインドウ登場
    dw  dsp_koi_scr_sum     ;出来役表示
    dw  job_koi_scr_sum     ;集計処理
    dw  reg_koi_scr_sum     ;ウインドウ退場
    dw  next_koi_scr_sum    ;後処理
;-----------------------------------------------------------------------------
koi_scr_sum:                ;集計タイム
    push    r10         ;
    movz.bw wbKoiDist,r10       ;
    mov.w   tkoi_scr_sum(r10),r10   ;オラオラオラオラー
    jsr [r10]           ;
    pop r10         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   集計処理
;-----------------------------------------------------------------------------
init_koi_scr_sum:           ;
    jsr _SPlate_Man     ;
    test.b  wbSPltCk        ;ウインドウ処理
    bne end_init_koi_scr_sum    ;
    inc.b   wbKoiDist       ;
end_init_koi_scr_sum:           ;
    rsr             ;
;-----------------------------------------------------------------------------
;   通信対戦用勝ち負けフラグセット
;-----------------------------------------------------------------------------
ent_koi_scr_sum:            ;
    test.b  wbRsMode        ;
    be  next_ent_koi_scr_sum    ;通信対戦以外は関係なし

    test.b  wbPntGirl       ;
    be  win_ent_koi_scr_sum ;勝ち
    test.b  wbPntPly        ;
    be  lose_ent_koi_scr_sum    ;負け
    cmp.b   #$02,wbRsRound      ;
    bl  next_ent_koi_scr_sum    ;延長戦以外は通常続行
    cmp.b   #$02,wbRsRound      ;
    bne set_ent_koi_scr_sum ;
    cmp.b   wbPntGirl,wbPntPly  ;最終戦の場合だね
    be  next_ent_koi_scr_sum    ;
    bl  lose_ent_koi_scr_sum    ;
    br  win_ent_koi_scr_sum ;
set_ent_koi_scr_sum:            ;延長戦の場合だね
    cmp.b   wbPntGirl,wbPntPly  ;
    ble lose_ent_koi_scr_sum    ;同点は無いと思うけど
win_ent_koi_scr_sum:            ;プレイヤーの勝ち
    mov.b   #$01,wbRsWinJd      ;勝ちフラグ
    br  next_ent_koi_scr_sum    ;
lose_ent_koi_scr_sum:           ;プレイヤーの負け
    mov.b   #$02,wbRsWinJd      ;負けフラグ
next_ent_koi_scr_sum:           ;
    inc.b   wbKoiDist       ;
    rsr             ;
;-----------------------------------------------------------------------------
;   勝ち負け演出
;-----------------------------------------------------------------------------
dsp_koi_scr_sum:            ;
    push    r25         ;
    test.b  wbRsMode        ;
    be  next_dsp_koi_scr_sum    ;通常ゲームの場合は関係なし
    test.b  wbRsWinJd       ;
    be  next_dsp_koi_scr_sum    ;まだ勝負はついていない
    mov.b   wbRsWinJd,wbRs_MsgNo    ;
    dec.b   wbRs_MsgNo      ;
    jsr Koi_Rs_Comm     ;
    test.b  r25         ;
    bne end_dsp_koi_scr_sum ;
next_dsp_koi_scr_sum:           ;
    inc.b   wbKoiDist       ;
end_dsp_koi_scr_sum:            ;
    pop r25         ;
    rsr             ;
;-----------------------------------------------------------------------------
;   ワイプセット
;-----------------------------------------------------------------------------
job_koi_scr_sum:            ;
    mov.b   #$00,wbWipeMode     ;ワイプセット
    mov.b   #$00,wbWipeIO       ;
    mov.b   #$01,wbWipeCk       ;

    mov.b   #$00,wbYakuOya      ;親権フラグを毎回クリア

;   push    r0          ;
;   mov.b   #$fe,r0         ;BGMフェードアウト
;   jsr play_music      ;
;   pop r0          ;

    inc.b   wbKoiDist       ;
    rsr             ;
;-----------------------------------------------------------------------------
;   ワイプアウト
;-----------------------------------------------------------------------------
reg_koi_scr_sum:            ;
    test.b  wbWipeCk        ;
    bne end_reg_koi_scr_sum ;
    jsr __Esect_Kill_All    ;エセクト強制終了

    inc.b   wbKoiDist       ;
end_reg_koi_scr_sum:            ;
    rsr             ;
;-----------------------------------------------------------------------------
;   後処理
;-----------------------------------------------------------------------------
next_koi_scr_sum:           ;
    mov.b   #$00,wbKoiDist      ;
    inc.b   wbKoiTask       ;上位タスクも進める
    rsr             ;
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;   サブルーチンの類
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------

;-----------------------------------------------------------------------------
;   _Ba_Cur_YN  ; Yes/No選択パネル用
;       in  : nothing
;       out : nothing
;-----------------------------------------------------------------------------
_Ba_Cur_YN:             ;
    pushm   #r1/r2          ;
;   jsr Esect_Anm       ;
    test.b  wbBaCurBusy     ;決定したかい?
    bne kill_Ba_Cur_YN      ;終了へ
    mov.w   _Ese_Anm_Tbl[r0],r1 ;アニメーションテーブルを確保
    movz.bw wbBaYNPos,r2        ;
    mov.w   [r1](r2),r2     ;
    movz.hw _Ese_Mov_Tim[r0],r1 ;
;   shl.w   #$01,r1         ;
;   mov.h   [r2](r1),_Ese_Cobj_Num[r0]  ;子オブジェの数
    mov.h   [r2](r1),_Ese_Cobj_Pls[r0]  ;子オブジェの場所
    inc.h   _Ese_Mov_Tim[r0]    ;
    cmp.h   #18,_Ese_Mov_Tim[r0]    ;
    bne end_Ba_Cur_YN       ;
    mov.h   #$00,_Ese_Mov_Tim[r0]   ;
    br  end_Ba_Cur_YN       ;
kill_Ba_Cur_YN:             ;
    jsr Esect_Kill      ;コロる
end_Ba_Cur_YN:              ;
    popm    #r1/r2          ;
    rsr             ;
;-----------------------------------------------------------------------------
;   _Ba_Cur_Msg ; 「合わせ札はこれで良いかい?」パネル用
;       in  : nothing
;       out : nothing
;-----------------------------------------------------------------------------
_Ba_Cur_Msg:                ;
    jsr Esect_Anm       ;
    test.b  wbBaCurBusy     ;決定したかい?
    be  end_Ba_Cur_Msg      ;
kill_Ba_Cur_Msg:            ;
    jsr Esect_Kill      ;コロる
end_Ba_Cur_Msg:             ;
    rsr             ;
;-----------------------------------------------------------------------------
;   _Ba_Cur     ; 場札選択カーソル用
;       in  : nothing
;       out : nothing
;-----------------------------------------------------------------------------
_Ba_Cur:                ;
    pushm   #r1/r2          ;
    test.b  wbBaCurBusy     ;決定したかい?
    bne kill_Ba_Cur     ;
pos_Ba_Cur:             ;ポジションセット
    movz.bw wbBaCurPos,r2       ;
    shl.w   #$01,r2         ;
    mov.h   tBaCurPos(r2),_Ese_Pos_H[r0]    ;H
    inc.w   r2          ;
    mov.h   tBaCurPos(r2),_Ese_Pos_V[r0]    ;V
anm_Ba_Cur:             ;アニメーション・パターンセット
    movz.bw wbBaCurAnm,r1       ;
    shl.w   #$01,r1         ;
    mov.h   tFuda_cel_cur(r1),_Ese_Cobj_Pls[r0] ;
    inc.w   r1          ;
    mov.h   tFuda_cel_cur(r1),_Ese_Cobj_Num[r0] ;
    inc.b   wbBaCurAnm      ;
    cmp.b   #20,wbBaCurAnm      ;
    bne end_Ba_Cur      ;
    mov.b   #$00,wbBaCurAnm     ;
    br  end_Ba_Cur      ;
kill_Ba_Cur:                ;
    jsr Esect_Kill      ;コロる
end_Ba_Cur:             ;
    popm    #r1/r2          ;
    rsr             ;
;-----------------------------------------------------------------------------
;   _Del_Bafuda ; 場札の登録抹消(仮抹消)
;       in  : r20(.b) -> 登録抹消する札インデックス
;       out : nothing
;-----------------------------------------------------------------------------
_Del_Bafuda:                ;
    pushm   #r10-r12        ;
    mov.w   #wBa_huda,r10       ;
    movz.bw r20,r11         ;
    mov.w   #wBrankFuda,r12     ;
    mov.b   #$ff,[r10](r11)     ;
    mov.b   #$01,[r12](r11)     ;こっちにも登録
    popm    #r10-r12        ;
    rsr             ;
;-----------------------------------------------------------------------------
;   _Ba_Brk_Cnt     ; 場札のブランクカウント
;           in  : nothing
;           out : r20(.b) -> ブランク数
;-----------------------------------------------------------------------------
_Ba_Brk_Cnt:                ;場札のブランクカウント
    pushm   #r10-r13        ;
    mov.w   #wBa_huda,r10       ;
    mov.w   #$00,r11        ;
    mov.w   #12,r12         ;
    mov.w   #wBrankFuda,r13     ;
    mov.b   #$00,r20        ;
job_Ba_Brk_Cnt:             ;
    cmp.b   #$ff,[r10](r11)     ;
    bne loop_Ba_Brk_Cnt     ;
    test.b  [r13](r11)      ;正確にチェックする
    bne loop_Ba_Brk_Cnt     ;
    inc.b   r20         ;
loop_Ba_Brk_Cnt:            ;
    inc.w   r11         ;
    dec.w   r12         ;
    bnz job_Ba_Brk_Cnt      ;
end_Ba_Brk_Cnt:             ;
    popm    #r10-r13        ;
    rsr             ;
;;-----------------------------------------------------------------------------
;;  _Get_Fuda_Req       ;移動札を取り札として登録する
;;          in  :r15(.w) -> 取った札ワークアドレス
;;              :r16(.w) -> 取った札インデックスアドレス
;;          out :nothing
;;-----------------------------------------------------------------------------
;_Get_Fuda_Req:             ;
;   push    r17         ;
;   movz.bw [r16],r17       ;インデックスの取得
;_Get_Fuda_Req1:                ;
;   cmp.b   #$ff,wbBtoT_fuda1   ;
;   be  _Get_Fuda_Req2      ;
;   mov.b   wbBtoT_fuda1,[r15](r17) ;
;   inc.w   r17         ;
;   inc.b   [r16]           ;
;_Get_Fuda_Req2:                ;
;   cmp.b   #$ff,wbBtoT_fuda2   ;
;   be  _Get_Fuda_Req3      ;
;   mov.b   wbBtoT_fuda2,[r15](r17) ;
;   inc.w   r17         ;
;   inc.b   [r16]           ;
;_Get_Fuda_Req3:                ;
;   cmp.b   #$ff,wbBtoT_fuda3   ;
;   be  _Get_Fuda_Req4      ;
;   mov.b   wbBtoT_fuda3,[r15](r17) ;
;   inc.w   r17         ;
;   inc.b   [r16]           ;
;_Get_Fuda_Req4:                ;
;   cmp.b   #$ff,wbBtoT_fuda4   ;
;   be  end_Get_Fuda_Req    ;
;   mov.b   wbBtoT_fuda4,[r15](r17) ;
;   inc.w   r17         ;
;   inc.b   [r16]           ;
;end_Get_Fuda_Req:          ;
;   pop r17         ;
;   rsr             ;
;-----------------------------------------------------------------------------
;   _Fuda_Shar_Cnt      ; 取った札の点数別カウント
;           in  : r10(.w) -> 取った札ワーク
;           out : r11(.w) -> 00点札の枚数
;               : r12(.w) -> 05点札の枚数
;               : r13(.w) -> 10点札の枚数
;               : r14(.w) -> 20点札の枚数
;-----------------------------------------------------------------------------
_Fuda_Shar_Cnt:                 ;
    pushm   #r15-r17            ;
    mov.w   #$00,r11            ;00点札の枚数
    mov.w   #$00,r12            ;05点札の枚数
    mov.w   #$00,r13            ;10点札の枚数
    mov.w   #$00,r14            ;20点札の枚数
    mov.w   #32,r15             ;LC
job_Fuda_Shar_Cnt:              ;
    movz.bw [r10+],r16          ;
    cmp.w   #$ff,r16            ;
    be  end_Fuda_Shar_Cnt       ;
    mov.b   tFuda_points(r16),r17       ;
job_Fuda_Shar_Cnt00:                ;
    test.b  r17             ;
    bne job_Fuda_Shar_Cnt05     ;
    inc.w   r11             ;
    br  loop__Fuda_Shar_Cnt     ;
job_Fuda_Shar_Cnt05:                ;
    cmp.b   #$01,r17            ;
    bne job_Fuda_Shar_Cnt10     ;
    inc.w   r12             ;
    br  loop__Fuda_Shar_Cnt     ;
job_Fuda_Shar_Cnt10:                ;
    cmp.b   #$02,r17            ;
    bne job_Fuda_Shar_Cnt20     ;
    inc.w   r13             ;
    br  loop__Fuda_Shar_Cnt     ;
job_Fuda_Shar_Cnt20:                ;
    inc.w   r14             ;
loop__Fuda_Shar_Cnt:                ;
    dec.w   r15             ;
    bne job_Fuda_Shar_Cnt       ;
end_Fuda_Shar_Cnt:              ;
    popm    #r15-r17            ;
    rsr                 ;
;-----------------------------------------------------------------------------
;   _Fuda_Dir_Pos_Set:  : 札の直接ポジションセット
;           in  : r0(.w) -> 札ナンバー
;               : r1(.h) -> H
;               : r2(.h) -> V
;           out : nothing
;-----------------------------------------------------------------------------
_Fuda_Dir_Pos_Set:              ;
    push    r10             ;
    mov.w   r0,r10              ;逃がす
    shl.w   #$05,r10            ;
    add.w   #wFuda,r10          ;
    mov.h   r1,_Fuda_posH+$2[r10]       ;
    mov.h   r2,_Fuda_posV+$2[r10]       ;
    mov.h   #$00,_Fuda_posH[r10]        ;
    mov.h   #$00,_Fuda_posV[r10]        ;
end_Fuda_Dir_Pos_Set:               ;
    pop r10             ;
    rsr                 ;
;-----------------------------------------------------------------------------
;   _init_GetFuda_PosP  ; プレイヤーの札移動ポジション等の割り出し
;           in  : r11(.w) -> 00点札の枚数
;               : r12(.w) -> 05点札の枚数
;               : r13(.w) -> 10点札の枚数
;               : r14(.w) -> 20点札の枚数
;           out : nothing
;-----------------------------------------------------------------------------
_init_GetFuda_PosP:             ;
    pushm   #r15-r17            ;
job_init_GetFuda_PosP00:            ;
    test.w  r11             ;
    bne job2_init_GetFuda_PosP00    ;
    mov.h   #Hpos_PFX00,whGetFudaPos00P ;
    br  job_init_GetFuda_PosP05     ;
job2_init_GetFuda_PosP00:           ;
    shl.w   #$03,r11            ;00点札総ドット数
    movt.wh r11,r11             ;
    neg.h   r11,r11             ;
    add.h   #Hpos_PFX00,r11         ;
    add.h   #-8,r11             ;
    mov.h   r11,whGetFudaPos00P     ;置く位置セット
job_init_GetFuda_PosP05:            ;
    test.w  r12             ;
    bne job2_init_GetFuda_PosP05    ;
    mov.h   #Hpos_PFX05,whGetFudaPos05P ;
    br  job_init_GetFuda_PosP10     ;
job2_init_GetFuda_PosP05:           ;
    mov.w   r12,r16             ;逃がす
    mov.w   r16,r17             ;
    mul.w   #26,r12             ;05点札総ドット数
    mov.w   #HsizGetFuda05,r15      ;
    cmp.w   r15,r12             ;
    bh  job3_init_GetFuda_PosP05    ;置き領域オーバー
    movt.wh r12,r12             ;
    neg.h   r12,r12             ;
    add.h   #26,r12             ;
    add.h   #Hpos_PFX05,r12         ;
    add.h   #-4,r12             ;
    mov.h   r12,whGetFudaPos05P     ;
    br  job_init_GetFuda_PosP10     ;
job3_init_GetFuda_PosP05:           ;
    movt.wh r15,r15             ;
    neg.h   r15,r15             ;
    add.h   #Hpos_PFX05,r15         ;
    add.h   #-4,r15             ;
    mov.h   r15,whGetFudaPos05P     ;
job_init_GetFuda_PosP10:            ;

    test.w  r13             ;
    bne job2_init_GetFuda_PosP10    ;
    mov.h   #Hpos_PFX10,whGetFudaPos10P ;
    br  job_init_GetFuda_PosP20     ;
job2_init_GetFuda_PosP10:           ;
    mov.w   r13,r16             ;逃がす
    mul.w   #26,r13             ;10点札総ドット数
    mov.w   #HsizGetFuda10,r15      ;
    cmp.w   r15,r13             ;
    bh  job3_init_GetFuda_PosP10    ;置き領域オーバー
    movt.wh r13,r13             ;
    neg.h   r13,r13             ;
    add.h   #26,r13             ;
    add.h   #Hpos_PFX10,r13         ;
    add.h   #-4,r13             ;
    mov.h   r13,whGetFudaPos10P     ;
    br  job_init_GetFuda_PosP20     ;
job3_init_GetFuda_PosP10:           ;
    movt.wh r15,r15             ;
    neg.h   r15,r15             ;
    add.h   #Hpos_PFX10,r15         ;
    add.h   #-4,r15             ;
    mov.h   r15,whGetFudaPos10P     ;
job_init_GetFuda_PosP20:            ;
    test.w  r14             ;
    bne job2_init_GetFuda_PosP20    ;
    mov.h   #Hpos_PFX20,whGetFudaPos20P ;
    br  end_init_GetFuda_PosP       ;
job2_init_GetFuda_PosP20:           ;
    mov.w   r14,r16             ;逃がす
    mul.w   #26,r14             ;20点札総ドット数
    mov.w   #HsizGetFuda20,r15      ;
    cmp.w   r15,r14             ;
    bh  job3_init_GetFuda_PosP20    ;置き領域オーバー
    movt.wh r14,r14             ;
    neg.h   r14,r14             ;
    add.h   #26,r14             ;
    add.h   #Hpos_PFX20,r14         ;
    add.h   #-4,r14             ;
    mov.h   r14,whGetFudaPos20P     ;
    br  end_init_GetFuda_PosP       ;
job3_init_GetFuda_PosP20:           ;
    movt.wh r15,r15             ;
    neg.h   r15,r15             ;
    add.h   #Hpos_PFX20,r15         ;
    add.h   #-4,r15             ;
    mov.h   r15,whGetFudaPos20P     ;

end_init_GetFuda_PosP:              ;
    popm    #r15-r17            ;
    rsr                 ;
;-----------------------------------------------------------------------------
;   _init_GetFuda_SetP  ; プレイヤーの札移動直前?
;           in  : r1(.w) -> 札ナンバー
;           out : nothing
;-----------------------------------------------------------------------------
_init_GetFuda_SetP:             ;
    pushm   #r0/r21-r22         ;
job_init_GetFuda_SetP:              ;
    mov.w   r1,r0               ;
    shl.w   #$05,r0             ;
    add.w   #wFuda,r0           ;ワーク先頭の確保
    mov.b   tFuda_points(r1),r1     ;
job_init_GetFuda_SetP00:            ;
    test.b  r1              ;
    bne job_init_GetFuda_SetP05     ;
    mov.h   whGetFudaPos00P,r21     ;
    mov.h   #Vpos_PFX00,r22         ;
    jsr _fuda_ptp_mov_init      ;
    add.h   #-8,whGetFudaPos00P     ;
    br  end_init_GetFuda_SetP       ;
job_init_GetFuda_SetP05:            ;
    cmp.b   #$01,r1             ;
    bne job_init_GetFuda_SetP10     ;
    mov.h   whGetFudaPos05P,r21     ;
    mov.h   #Vpos_PFX05,r22         ;
    jsr _fuda_ptp_mov_init      ;
    add.h   #-4,whGetFudaPos05P     ;
    br  end_init_GetFuda_SetP       ;
job_init_GetFuda_SetP10:            ;
    cmp.b   #$02,r1             ;
    bne job_init_GetFuda_SetP20     ;
    mov.h   whGetFudaPos10P,r21     ;
    mov.h   #Vpos_PFX10,r22         ;
    jsr _fuda_ptp_mov_init      ;
    add.h   #-4,whGetFudaPos10P     ;
    br  end_init_GetFuda_SetP       ;
job_init_GetFuda_SetP20:            ;
    mov.h   whGetFudaPos20P,r21     ;
    mov.h   #Vpos_PFX20,r22         ;
    jsr _fuda_ptp_mov_init      ;
    add.h   #-4,whGetFudaPos20P     ;
end_init_GetFuda_SetP:              ;
    popm    #r0/r21-r22         ;
    rsr                 ;
;-----------------------------------------------------------------------------
;   _GetFuda_Arg_AgnP:  ; 取った札の再配置(最新版)
;           in  : nothing
;           out : nothing
;-----------------------------------------------------------------------------
_GetFuda_Arg_AgnP:          ;
    pushm   #r0-r2/r10-r25      ;

    mov.w   #wbGetFudaP,r10     ;
    jsr _Fuda_Shar_Cnt      ;

    mov.w   #wbGet00FudaP,r20   ;
    mov.w   #wbGet05FudaP,r21   ;
    mov.w   #wbGet10FudaP,r22   ;
    mov.w   #wbGet20FudaP,r23   ;

    mov.w   r11,r15         ;LC00
    mov.w   r12,r16         ;LC05
    mov.w   r13,r17         ;LC10
    mov.w   r14,r18         ;LC20

job_GetFuda_Arg_AgnP:           ;


init_GetFuda_Arg_AgnP00:        ;00点札
    test.w  r11         ;
    be  init_GetFuda_Arg_AgnP05 ;
    mov.h   #Hpos_PFX00,r11     ;
job_GetFuda_Arg_AgnP00:         ;
    movz.bw [r20+],r24      ;
    mov.w   r24,r0          ;
    mov.h   r11,r1          ;
    mov.h   #Vpos_PFX00,r2      ;
    jsr _Fuda_Dir_Pos_Set   ;
    add.h   #-8,r11         ;
loop_GetFuda_Arg_AgnP00:        ;
    dec.w   r15         ;
    bnz job_GetFuda_Arg_AgnP00  ;
init_GetFuda_Arg_AgnP05:        ;05点札
    mov.w   r12,r19         ;逃がす
    test.w  r12         ;
    be  init_GetFuda_Arg_AgnP10 ;除外対象
    mul.w   #26,r12         ;取った札の総ドット数
    sha.w   #16,r12         ;
    mov.w   #(HsizGetFuda05+26),r25 ;MAX幅
    sha.w   #16,r25         ;浮動小数点演算用
    cmp.w   r25,r12         ;
    bh  init2_GetFuda_Arg_AgnP05    ;MAX幅を越えているとき
    mov.w   #-26,r12        ;札重なり幅(この場合は無し)
    sha.w   #16,r12         ;浮動小数点演算用
    mov.w   #$00,r25        ;
    br  job_GetFuda_Arg_AgnP05  ;
init2_GetFuda_Arg_AgnP05:       ;
    sub.w   r12,r25         ;ここでマイナス
    dec.w   r19         ;
    div.w   r19,r25         ;
    add.w   #$1a0000,r25        ;26*65536(浮動小数点演算用)
    mov.w   r25,r12         ;
    neg.w   r12,r12         ;
    mov.w   #$00,r25        ;
job_GetFuda_Arg_AgnP05:         ;
    movz.bw [r21+],r24      ;
    mov.w   r24,r0          ;
;   mov.w   r12,r1          ;
    mov.w   r25,r1          ;
    sha.w   #-16,r1         ;
    movt.wh r1,r1           ;
    add.h   #Hpos_PFX05,r1      ;
    mov.h   #Vpos_PFX05,r2      ;

    jsr _Fuda_Dir_Pos_Set   ;
    add.w   r12,r25         ;
loop_GetFuda_Arg_AgnP05:        ;
    dec.w   r16         ;
    bnz job_GetFuda_Arg_AgnP05  ;
;-----------------------------------------------------------------------------
init_GetFuda_Arg_AgnP10:        ;
    mov.w   r13,r19         ;逃がす
    test.w  r13         ;
    be  init_GetFuda_Arg_AgnP20 ;除外対象
    mul.w   #26,r13         ;取った札の総ドット数
    sha.w   #16,r13         ;
    mov.w   #(HsizGetFuda10+26),r25 ;MAX幅
    sha.w   #16,r25         ;
    cmp.w   r25,r13         ;
    bh  init2_GetFuda_Arg_AgnP10    ;MAX幅を越えているとき
    mov.w   #-26,r13        ;札重なり幅(この場合は無し)
    sha.w   #16,r13         ;浮動小数点演算用
    mov.w   #$00,r25        ;
    br  job_GetFuda_Arg_AgnP10  ;
init2_GetFuda_Arg_AgnP10:       ;
    sub.w   r13,r25         ;ここでマイナス
    dec.w   r19         ;
    div.w   r19,r25         ;
    add.w   #$1a0000,r25        ;26*65536(浮動小数点演算用)
    mov.w   r25,r13         ;
    neg.w   r13,r13         ;
    mov.w   #$00,r25        ;
job_GetFuda_Arg_AgnP10:         ;
    movz.bw [r22+],r24      ;
    mov.w   r24,r0          ;
;   mov.w   r13,r1          ;
    mov.w   r25,r1          ;
    sha.w   #-16,r1         ;
    movt.wh r1,r1           ;
    add.h   #Hpos_PFX10,r1      ;
    mov.h   #Vpos_PFX10,r2      ;
    jsr _Fuda_Dir_Pos_Set   ;
    add.w   r13,r25         ;
loop_GetFuda_Arg_AgnP10:        ;
    dec.w   r17         ;
    bnz job_GetFuda_Arg_AgnP10  ;
;-----------------------------------------------------------------------------
init_GetFuda_Arg_AgnP20:        ;
    mov.w   r14,r19         ;逃がす
    test.w  r14         ;
    be  end_GetFuda_Arg_AgnP    ;除外対象
    mul.w   #26,r14         ;取った札の総ドット数
    sha.w   #16,r14         ;
    mov.w   #(HsizGetFuda20+26),r25 ;MAX幅
    sha.w   #16,r25         ;
    cmp.w   r25,r14         ;
    bh  init2_GetFuda_Arg_AgnP20    ;MAX幅を越えているとき
    mov.w   #-26,r14        ;札重なり幅(この場合は無し)
    sha.w   #16,r14         ;浮動小数点演算用
    mov.w   #$00,r25        ;
    br  job_GetFuda_Arg_AgnP20  ;
init2_GetFuda_Arg_AgnP20:       ;
    sub.w   r14,r25         ;ここでマイナス
    dec.w   r19         ;
    div.w   r19,r25         ;
    add.w   #$1a0000,r25        ;26*65536(浮動小数点演算用)
    mov.w   r25,r14         ;
    neg.w   r14,r14         ;
    mov.w   #$00,r25        ;
job_GetFuda_Arg_AgnP20:         ;
    movz.bw [r23+],r24      ;
    mov.w   r24,r0          ;
;   mov.w   r14,r1          ;
    mov.w   r25,r1          ;
    sha.w   #-16,r1         ;
    movt.wh r1,r1           ;
    add.h   #Hpos_PFX20,r1      ;
    mov.h   #Vpos_PFX20,r2      ;
    jsr _Fuda_Dir_Pos_Set   ;
    add.w   r14,r25         ;
loop_GetFuda_Arg_AgnP20:        ;
    dec.w   r18         ;
    bnz job_GetFuda_Arg_AgnP20  ;
end_GetFuda_Arg_AgnP:           ;
    popm    #r0-r2/r10-r25      ;
    rsr             ;
;-----------------------------------------------------------------------------
;   _init_GetFuda_PosC  ; CPUの札移動ポジション等の割り出し
;           in  : r11(.w) -> 00点札の枚数
;               : r12(.w) -> 05点札の枚数
;               : r13(.w) -> 10点札の枚数
;               : r14(.w) -> 20点札の枚数
;           out : nothing
;-----------------------------------------------------------------------------
_init_GetFuda_PosC:             ;
    pushm   #r15-r17            ;
job_init_GetFuda_PosC00:            ;
    test.w  r11             ;
    bne job2_init_GetFuda_PosC00    ;
    mov.h   #Hpos_CPUColKs,whGetFudaPos00C  ;
    br  job_init_GetFuda_PosC05     ;
job2_init_GetFuda_PosC00:           ;
    mov.w   r11,r16             ;逃がす
    mov.w   r16,r17             ;
    mul.w   #26,r11             ;00点札総ドット数
    mov.w   #HsizGetFudaC00,r15     ;
    cmp.w   r15,r11             ;
    bh  job3_init_GetFuda_PosC00    ;置き領域オーバー
    movt.wh r11,r11             ;
    add.h   #-26,r11            ;
    add.h   #Hpos_CPUColKs,r11      ;
    add.h   #4,r11              ;
    mov.h   r11,whGetFudaPos00C     ;
    br  job_init_GetFuda_PosC05     ;
job3_init_GetFuda_PosC00:           ;
    movt.wh r15,r15             ;
    add.h   #Hpos_CPUColKs,r15      ;
    add.h   #4,r15              ;
    mov.h   r15,whGetFudaPos00C     ;
job_init_GetFuda_PosC05:            ;
    add.w   r12,r13             ;
    add.w   r14,r13             ;3種混同

    test.w  r13             ;
    bne job2_init_GetFuda_PosC05    ;
    mov.h   #Hpos_CPUColYaku,whGetFudaPos35C    ;
    br  end_init_GetFuda_PosC       ;
job2_init_GetFuda_PosC05:           ;
    mov.w   r13,r16             ;逃がす
    mul.w   #26,r13             ;その他の札総ドット数
    mov.w   whGetFudaBMaxC,r15      ;
    cmp.w   r15,r13             ;
    bh  job3_init_GetFuda_PosC05    ;置き領域オーバー
    movt.wh r13,r13             ;
    add.h   #-26,r13            ;
    add.h   #Hpos_CPUColYaku,r13        ;
    add.h   #4,r13              ;
    mov.h   r13,whGetFudaPos35C     ;
    br  end_init_GetFuda_PosC       ;
job3_init_GetFuda_PosC05:           ;
    movt.wh r15,r15             ;
    add.h   #Hpos_CPUColYaku,r15        ;
    add.h   #4,r15              ;
    mov.h   r15,whGetFudaPos35C     ;
end_init_GetFuda_PosC:              ;
    popm    #r15-r17            ;
    rsr                 ;
;-----------------------------------------------------------------------------
;   _init_GetFuda_SetC  ; CPUの札移動直前?
;           in  : r1(.w) -> 札ナンバー
;           out : nothing
;-----------------------------------------------------------------------------
_init_GetFuda_SetC:             ;
    pushm   #r0/r21-r22         ;
job_init_GetFuda_SetC:              ;
    mov.w   r1,r0               ;
    shl.w   #$05,r0             ;
    add.w   #wFuda,r0           ;ワーク先頭の確保
    mov.b   tFuda_points(r1),r1     ;
job_init_GetFuda_SetC00:            ;
    test.b  r1              ;
    bne job_init_GetFuda_SetC05     ;
    mov.h   whGetFudaPos00C,r21     ;
    mov.h   #Vpos_CPUColKs,r22      ;
    jsr _fuda_ptp_mov_init      ;
    add.h   #4,whGetFudaPos00C      ;
    br  end_init_GetFuda_SetC       ;
job_init_GetFuda_SetC05:            ;
    mov.h   whGetFudaPos35C,r21     ;
    mov.h   #Vpos_CPUColYaku,r22        ;
    jsr _fuda_ptp_mov_init      ;
    add.h   #4,whGetFudaPos35C      ;
end_init_GetFuda_SetC:              ;
    popm    #r0/r21-r22         ;
    rsr                 ;
;-----------------------------------------------------------------------------
;   _GetFuda_Arg_AgnC:  ; 取った札の再配置(最新版)
;           in  : nothing
;           out : nothing
;-----------------------------------------------------------------------------
_GetFuda_Arg_AgnC:          ;
    pushm   #r0-r2/r10-r25      ;

    mov.w   #wbGetFudaC,r10     ;
    jsr _Fuda_Shar_Cnt      ;

    mov.w   #wbGet00FudaC,r20   ;
    mov.w   #wbGet05FudaC,r21   ;
    mov.w   #wbGet10FudaC,r22   ;
    mov.w   #wbGet20FudaC,r23   ;

    mov.w   r11,r15         ;LC00
    mov.w   r12,r16         ;LC05
    mov.w   r13,r17         ;LC10
    mov.w   r14,r18         ;LC20

job_GetFuda_Arg_AgnC:           ;

init_GetFuda_Arg_AgnC00:        ;05点札
    mov.w   r11,r19         ;逃がす
    test.w  r11         ;
    be  init_GetFuda_Arg_AgnC05 ;除外対象
    mul.w   #26,r11         ;取った札の総ドット数
    sha.w   #16,r11         ;
    mov.w   #(HsizGetFudaC00+26),r25    ;MAX幅
    sha.w   #16,r25         ;浮動小数点演算用
    cmp.w   r25,r11         ;
    bh  init2_GetFuda_Arg_AgnC00    ;MAX幅を越えているとき
    mov.w   #26,r11         ;札重なり幅(この場合は無し)
    sha.w   #16,r11         ;浮動小数点演算用
    mov.w   #$00,r25        ;
    br  job_GetFuda_Arg_AgnC00  ;
init2_GetFuda_Arg_AgnC00:       ;
    sub.w   r11,r25         ;ここでマイナス
    dec.w   r19         ;
    div.w   r19,r25         ;
    add.w   #$1a0000,r25        ;26*65536(浮動小数点演算用)
    mov.w   r25,r11         ;
    mov.w   #$00,r25        ;
job_GetFuda_Arg_AgnC00:         ;
    movz.bw [r20+],r24      ;
    mov.w   r24,r0          ;
    mov.w   r25,r1          ;
    sha.w   #-16,r1         ;
    movt.wh r1,r1           ;
    add.h   #Hpos_CPUColKs,r1   ;
    mov.h   #Vpos_CPUColKs,r2   ;

    jsr _Fuda_Dir_Pos_Set   ;
    add.w   r11,r25         ;
loop_GetFuda_Arg_AgnC00:        ;
    dec.w   r15         ;
    bnz job_GetFuda_Arg_AgnC00  ;

;-----------------------------------------------------------------------------
init_GetFuda_Arg_AgnC05:        ;

    mov.w   r16,r15         ;
    add.w   r17,r16         ;LC
    add.w   r18,r16         ;LC

    add.w   r13,r12         ;
    add.w   r14,r12         ;
    mov.w   r12,r19         ;逃がす
    test.w  r12         ;
    be  end_GetFuda_Arg_AgnC    ;除外対象
    mul.w   #26,r12         ;取った札の総ドット数
    sha.w   #16,r12         ;
    movz.hw whGetFudaBMaxC,r25  ;MAX幅
    add.w   #26,r25         ;MAX幅+α
    sha.w   #16,r25         ;
    cmp.w   r25,r12         ;
    bh  init2_GetFuda_Arg_AgnC05    ;MAX幅を越えているとき
    mov.w   #26,r12         ;札重なり幅(この場合は無し)
    sha.w   #16,r12         ;浮動小数点演算用
    mov.w   #$00,r25        ;
    br  ex_job_GetFuda_Arg_AgnC05   ;
init2_GetFuda_Arg_AgnC05:       ;
    sub.w   r12,r25         ;ここでマイナス
    dec.w   r19         ;
    div.w   r19,r25         ;
    add.w   #$1a0000,r25        ;26*65536(浮動小数点演算用)
    mov.w   r25,r12         ;
    mov.w   #$00,r25        ;

ex_job_GetFuda_Arg_AgnC05:      ;

    test.w  r15         ;
    be  ex_job_GetFuda_Arg_AgnC10   ;

job_GetFuda_Arg_AgnC05:         ;
    movz.bw [r21+],r24      ;
    cmp.w   #$ff,r24        ;
    be  ex_job_GetFuda_Arg_AgnC10   ;コロル
    mov.w   r24,r0          ;
    mov.w   r25,r1          ;
    sha.w   #-16,r1         ;
    movt.wh r1,r1           ;
    add.h   #Hpos_CPUColYaku,r1 ;
    mov.h   #Vpos_CPUColYaku,r2 ;
    jsr _Fuda_Dir_Pos_Set   ;
    add.w   r12,r25         ;
loop_GetFuda_Arg_AgnC05:        ;
    dec.w   r15         ;
    bnz job_GetFuda_Arg_AgnC05  ;

ex_job_GetFuda_Arg_AgnC10:      ;

    test.w  r17         ;
    be  ex_job_GetFuda_Arg_AgnC20   ;
job_GetFuda_Arg_AgnC10:         ;
    movz.bw [r22+],r24      ;
    cmp.w   #$ff,r24        ;
    be  ex_job_GetFuda_Arg_AgnC20   ;
    mov.w   r24,r0          ;
    mov.w   r25,r1          ;
    sha.w   #-16,r1         ;
    movt.wh r1,r1           ;
    add.h   #Hpos_CPUColYaku,r1 ;
    mov.h   #Vpos_CPUColYaku,r2 ;
    jsr _Fuda_Dir_Pos_Set   ;
    add.w   r12,r25         ;
loop_GetFuda_Arg_AgnC10:        ;
    dec.w   r17         ;
    bnz job_GetFuda_Arg_AgnC10  ;

ex_job_GetFuda_Arg_AgnC20:      ;

    test.w  r18         ;
    be  end_GetFuda_Arg_AgnC    ;
job_GetFuda_Arg_AgnC20:         ;
    movz.bw [r23+],r24      ;
    cmp.w   #$ff,r24        ;
    be  end_GetFuda_Arg_AgnC    ;
    mov.w   r24,r0          ;
    mov.w   r25,r1          ;
    sha.w   #-16,r1         ;
    movt.wh r1,r1           ;
    add.h   #Hpos_CPUColYaku,r1 ;
    mov.h   #Vpos_CPUColYaku,r2 ;
    jsr _Fuda_Dir_Pos_Set   ;
    add.w   r12,r25         ;
loop_GetFuda_Arg_AgnC20:        ;
    dec.w   r18         ;
    bnz job_GetFuda_Arg_AgnC20  ;
end_GetFuda_Arg_AgnC:           ;
    popm    #r0-r2/r10-r25      ;
    rsr             ;
;-----------------------------------------------------------------------------
;   Fuda_Pri_Man        ; 札表示プライオリティーコントローラー
;           in  : nothing
;           out : nothing
;-----------------------------------------------------------------------------
Fuda_Pri_Man:               ;下から表示すんぞぉ
    pushm   #r10/r11        ;
    mov.b   #100,wbFudaPriCnt   ;試験的に100から始めてみる

    mov.w   #wPly_Tehuda,r10    ;プレイヤーの手札
    mov.w   #08,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wCpu_Tehuda,r10    ;CPUの手札
    mov.w   #08,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbGet00FudaP,r10   ;プレイヤーの取った00点札
    mov.w   #24,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbGet05FudaP,r10   ;プレイヤーの取った05点札
    mov.w   #10,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbGet10FudaP,r10   ;プレイヤーの取った10点札
    mov.w   #09,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbGet20FudaP,r10   ;プレイヤーの取った20点札
    mov.w   #05,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbGet00FudaC,r10   ;CPUの取った00点札
    mov.w   #24,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbGet05FudaC,r10   ;CPUの取った05点札
    mov.w   #10,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbGet10FudaC,r10   ;CPUの取った10点札
    mov.w   #09,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbGet20FudaC,r10   ;CPUの取った20点札
    mov.w   #05,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wBa_huda,r10       ;場札
    mov.w   #12,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbBtoT_fuda4,r10   ;手札に叩かれる方
    mov.w   #01,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbBtoT_fuda3,r10   ;起き札に叩かれる方
    mov.w   #01,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbBtoT_fuda2,r10   ;手札
    mov.w   #01,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbBtoT_fuda1,r10   ;起き札
    mov.w   #01,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbTtoB_fuda,r10    ;手札から場札への捨て札用ワーク
    mov.w   #01,r11         ;
    jsr _Fuda_Pri_Set       ;

    mov.w   #wbMtoB_fuda,r10    ;めくり札から場札への移動札ワーク
    mov.w   #01,r11         ;
    jsr _Fuda_Pri_Set       ;

    popm    #r10/r11        ;
    rsr             ;

;-----------------------------------------------------------------------------
;   _Fuda_Pri_Set       ; 札表示プライオリティーセット
;           in  : r10(.w) -> 札ナンバーの入っているワークAD
;               : r11(.w) -> ワーク用LC
;           out : nothing
;-----------------------------------------------------------------------------
_Fuda_Pri_Set:              ;
    push    r0          ;
job_Fuda_Pri_Set:           ;
    mov.b   [r10+],r0       ;
    cmp.b   #$ff,r0         ;
    be  loop_job_Fuda_Pri_Set   ;
    movz.bw r0,r0           ;
    shl.w   #$05,r0         ;
    add.w   #wFuda,r0       ;
    mov.b   wbFudaPriCnt,_Fuda_pri[r0]  ;
    dec.b   wbFudaPriCnt        ;
loop_job_Fuda_Pri_Set:          ;
    dec.w   r11         ;
    bnz job_Fuda_Pri_Set    ;
    pop r0          ;
    rsr             ;
;-----------------------------------------------------------------------------
;   _Fuda_Hurry ; 「札を切ってね」表示内部用
;       in  : nothing
;       out : nothing
;-----------------------------------------------------------------------------
_Fuda_Hurry:                ;
    test.b  wbDemoPlay      ;デモプレイ中は、
    bne Kill_Fuda_Hurry     ;コロる
    jsr Esect_Anm       ;
    dec.w   _Ese_Mov_Tbl[r0]    ;
    bz  Kill_Fuda_Hurry     ;タイマー切れでもコロる
    test.b  wbFudaHurry     ;
    bne end_Fuda_Hurry      ;
Kill_Fuda_Hurry:            ;
    jsr Esect_Kill      ;コロる
    mov.b   #$00,wbFudaHurry    ;
end_Fuda_Hurry:             ;
    rsr             ;
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;   データ領域
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
    .section    data
    .align 4

tJD_Cpu_KoiKoi:     ;CPU用コイコイ判断データ(残り枚数依存型)

    db  01      ;1人目
    db  02      ;2人目
    db  03      ;3人目
    db  04      ;4人目
    db  04      ;5人目

;   db  00      ;6人目(隠しキャラ)
;   db  05      ;
;   db  06      ;
;   db  07      ;
;   db  08      ;

tTehudaPosP:    ;プレイヤー手札HV

    dh  Hpos_PLYHand1-2,Vpos_PLYHand1,Hpos_PLYHand2-2,Vpos_PLYHand2
    dh  Hpos_PLYHand3-2,Vpos_PLYHand3,Hpos_PLYHand4-2,Vpos_PLYHand4
    dh  Hpos_PLYHand5-2,Vpos_PLYHand5,Hpos_PLYHand6-2,Vpos_PLYHand6
    dh  Hpos_PLYHand7-2,Vpos_PLYHand7,Hpos_PLYHand8-2,Vpos_PLYHand8

tTehudaPosC:    ;CPU手札HV

    dh  Hpos_CPUHand1,Vpos_CPUHand1,Hpos_CPUHand2,Vpos_CPUHand2
    dh  Hpos_CPUHand3,Vpos_CPUHand3,Hpos_CPUHand4,Vpos_CPUHand4
    dh  Hpos_CPUHand5,Vpos_CPUHand5,Hpos_CPUHand6,Vpos_CPUHand6
    dh  Hpos_CPUHand7,Vpos_CPUHand7,Hpos_CPUHand8,Vpos_CPUHand8

tBahudaPos1:    ;場札位置HV

;   dh  Hpos_Table01,Vpos_Table01,Hpos_Table02,Vpos_Table02
    dh  Hpos_Table03,Vpos_Table03,Hpos_Table04,Vpos_Table04
    dh  Hpos_Table05,Vpos_Table05,Hpos_Table06,Vpos_Table06
    dh  Hpos_Table07,Vpos_Table07,Hpos_Table08,Vpos_Table08
    dh  Hpos_Table09,Vpos_Table09,Hpos_Table10,Vpos_Table10
    dh  Hpos_Table11,Vpos_Table11,Hpos_Table12,Vpos_Table12
    dh  Hpos_Table13,Vpos_Table13,Hpos_Table14,Vpos_Table14

tBahudaPos2:    ;場札への合わせ位置HV

;   dh  Hpos_Table01+HSpos_Same,Vpos_Table01+VSpos_Same
;   dh  Hpos_Table02+HSpos_Same,Vpos_Table02+VSpos_Same
    dh  Hpos_Table03+HSpos_Same,Vpos_Table03+VSpos_Same
    dh  Hpos_Table04+HSpos_Same,Vpos_Table04+VSpos_Same
    dh  Hpos_Table05+HSpos_Same,Vpos_Table05+VSpos_Same
    dh  Hpos_Table06+HSpos_Same,Vpos_Table06+VSpos_Same
    dh  Hpos_Table07+HSpos_Same,Vpos_Table07+VSpos_Same
    dh  Hpos_Table08+HSpos_Same,Vpos_Table08+VSpos_Same
    dh  Hpos_Table09+HSpos_Same,Vpos_Table09+VSpos_Same
    dh  Hpos_Table10+HSpos_Same,Vpos_Table10+VSpos_Same
    dh  Hpos_Table11+HSpos_Same,Vpos_Table11+VSpos_Same
    dh  Hpos_Table12+HSpos_Same,Vpos_Table12+VSpos_Same
    dh  Hpos_Table13+HSpos_Same,Vpos_Table13+VSpos_Same
    dh  Hpos_Table14+HSpos_Same,Vpos_Table14+VSpos_Same

tBaCurPos:  ;場札へのカーソル位置HV

;   dh  Hpos_Ba_Cur01,Vpos_Ba_Cur01,Hpos_Ba_Cur02,Vpos_Ba_Cur02
    dh  Hpos_Ba_Cur03,Vpos_Ba_Cur03,Hpos_Ba_Cur04,Vpos_Ba_Cur04
    dh  Hpos_Ba_Cur05,Vpos_Ba_Cur05,Hpos_Ba_Cur06,Vpos_Ba_Cur06
    dh  Hpos_Ba_Cur07,Vpos_Ba_Cur07,Hpos_Ba_Cur08,Vpos_Ba_Cur08
    dh  Hpos_Ba_Cur09,Vpos_Ba_Cur09,Hpos_Ba_Cur10,Vpos_Ba_Cur10
    dh  Hpos_Ba_Cur11,Vpos_Ba_Cur11,Hpos_Ba_Cur12,Vpos_Ba_Cur12
    dh  Hpos_Ba_Cur13,Vpos_Ba_Cur13,Hpos_Ba_Cur14,Vpos_Ba_Cur14

tAnm_Cur_Yes:
    dw  tAnm_Cur_Yes1,tAnm_Cur_Yes0

tAnm_Cur_No:
    dw  tAnm_Cur_No0,tAnm_Cur_No1

tAnm_Cur_Yes0:  ;Yesアニメーション用データ(暗)

    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)
    dh  __Msg_yes0  ;Yes(暗)

tAnm_Cur_Yes1:  ;Yesアニメーション用データ(明)

    dh  __Msg_yes1  ;Yes(明)0
    dh  __Msg_yes1  ;Yes(明)0
    dh  __Msg_yes1  ;Yes(明)0
    dh  __Msg_yes1  ;Yes(明)0
    dh  __Msg_yes1  ;Yes(明)0
    dh  __Msg_yes1  ;Yes(明)0

    dh  __Msg_yes2  ;Yes(明)1
    dh  __Msg_yes2  ;Yes(明)1
    dh  __Msg_yes2  ;Yes(明)1
    dh  __Msg_yes2  ;Yes(明)1
    dh  __Msg_yes2  ;Yes(明)1
    dh  __Msg_yes2  ;Yes(明)1

    dh  __Msg_yes3  ;Yes(明)2
    dh  __Msg_yes3  ;Yes(明)2
    dh  __Msg_yes3  ;Yes(明)2
    dh  __Msg_yes3  ;Yes(明)2
    dh  __Msg_yes3  ;Yes(明)2
    dh  __Msg_yes3  ;Yes(明)2

tAnm_Cur_No0:   ;Noアニメーション用データ(暗)

    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)
    dh  __Msg_no0   ;No(暗)

tAnm_Cur_No1:   ;Noアニメーション用データ(明)

    dh  __Msg_no1   ;No(明)0
    dh  __Msg_no1   ;No(明)0
    dh  __Msg_no1   ;No(明)0
    dh  __Msg_no1   ;No(明)0
    dh  __Msg_no1   ;No(明)0
    dh  __Msg_no1   ;No(明)0

    dh  __Msg_no2   ;No(明)1
    dh  __Msg_no2   ;No(明)1
    dh  __Msg_no2   ;No(明)1
    dh  __Msg_no2   ;No(明)1
    dh  __Msg_no2   ;No(明)1
    dh  __Msg_no2   ;No(明)1

    dh  __Msg_no3   ;No(明)2
    dh  __Msg_no3   ;No(明)2
    dh  __Msg_no3   ;No(明)2
    dh  __Msg_no3   ;No(明)2
    dh  __Msg_no3   ;No(明)2
    dh  __Msg_no3   ;No(明)2

tMov_All_Fuda4: ;札4の移動

    db  0,0,0,0

tMov_All_Fuda3: ;札3の移動

    db  0,0,0,0

tMov_All_Fuda2: ;札2の移動

    db  0,0,0,0

tMov_All_Fuda1: ;札1の移動

    db  2,1,1,1
    db  1,1,1,1
    db  1,1,1,1
    db  1,1,1,1

;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;   エセクト用リクエストデータ
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------

tEsect_Ba_cur:  ;場カーソル、及びメッセージパネル、その他のリクエスト

;場カーソル
    __mEsect_Init1  _Ba_Cur             ;実行プログラム名
    __mEsect_Init2  020,_NullData,__NullData    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  672,480             ;H、V
    __mEsect_Init4  tFuda_pos_cur,tFuda_cel_cur ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

;合わせ札はこれでいいですか?
    __mEsect_Init1  _Ba_Cur_Msg         ;実行プログラム名
    __mEsect_Init2  020,_Msg_hit1,__Msg_hit1        ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  Hpos_DlgSel,Vpos_DlgSel     ;H、V
    __mEsect_Init4  000,tAnm_Msg1           ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

;Yes
    __mEsect_Init1  _Ba_Cur_YN          ;実行プログラム名
    __mEsect_Init2  020,_Msg_yes1,__Msg_yes1    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  Hpos_DlgYes,Vpos_DlgYes     ;H、V
    __mEsect_Init4  000,tAnm_Cur_Yes        ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

;No
    __mEsect_Init1  _Ba_Cur_YN          ;実行プログラム名
    __mEsect_Init2  020,_Msg_no0,__Msg_no0      ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  Hpos_DlgNo,Vpos_DlgNo       ;H、V
    __mEsect_Init4  000,tAnm_Cur_No         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    STOP

tEsect_Koi_Ok:  ;コイコイするかい? セット JS版

;こいこいする?

    __mEsect_Init1  _Ba_Cur_Msg         ;実行プログラム名
    __mEsect_Init2  020,_Msg_koi1,__Msg_koi1    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  Hpos_DlgCall,Vpos_DlgCall   ;H、V
    __mEsect_Init4  000,tAnm_Msg2           ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

;Yes
    __mEsect_Init1  _Ba_Cur_YN          ;実行プログラム名
    __mEsect_Init2  020,_Msg_yes1,__Msg_yes1    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  Hpos_DlgYes2,Vpos_DlgYes2   ;H、V
    __mEsect_Init4  000,tAnm_Cur_Yes        ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

;No
    __mEsect_Init1  _Ba_Cur_YN          ;実行プログラム名
    __mEsect_Init2  020,_Msg_no0,__Msg_no0      ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  Hpos_DlgNo2,Vpos_DlgNo2     ;H、V
    __mEsect_Init4  000,tAnm_Cur_No         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    STOP

tEsect_Koi_Ok2: ;コイコイするかい? セット KB版

;こいこいする?

    __mEsect_Init1  _Ba_Cur_Msg         ;実行プログラム名
    __mEsect_Init2  020,_Msg_koi1,__Msg_koi1    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  Hpos_DlgCall,Vpos_DlgCall   ;H、V
    __mEsect_Init4  000,tAnm_Msg2           ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

;YesA
    __mEsect_Init1  _Ba_Cur_Msg         ;実行プログラム名
    __mEsect_Init2  020,_MsgM_yes1,__MsgM_yes1  ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  Hpos_DlgYes2,Vpos_DlgYes2   ;H、V
    __mEsect_Init4  000,tAnm_Yes_KB         ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

;NoN
    __mEsect_Init1  _Ba_Cur_Msg         ;実行プログラム名
    __mEsect_Init2  020,_MsgM_no1,__MsgM_no1    ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  Hpos_DlgNo2,Vpos_DlgNo2     ;H、V
    __mEsect_Init4  000,tAnm_No_KB          ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    STOP

tEsect_Fuda_Hurry:      ;「札を切ってね」

    __mEsect_Init1  _Fuda_Hurry         ;実行プログラム名
    __mEsect_Init2  020,_Msg_hury1,__Msg_hury1  ;プライオリティー,子オブジェの数,子オブジェの場所
    __mEsect_Init3  16*8,16*3+8         ;H、V
    __mEsect_Init4  120,tAnm_Msg3           ;移動テーブル先頭アドレス、アニメーションテーブルアドレス

    STOP

;-----------------------------------------------------------------------------
;   エセクト用アニメデータ
;-----------------------------------------------------------------------------
tAnm_Msg1:
    __mEsect_Anm    $ffff,tCel_Msg1
    STOP
tCel_Msg1:
    __mEsect_Cel    006,_Msg_hit1,__Msg_hit1    ;「合わせ札はこれでいい?」0
    __mEsect_Cel    006,_Msg_hit2,__Msg_hit2    ;「合わせ札はこれでいい?」1
    __mEsect_Cel    006,_Msg_hit3,__Msg_hit3    ;「合わせ札はこれでいい?」2
    STOP

tAnm_Msg2:
    __mEsect_Anm    $ffff,tCel_Msg2
    STOP
tCel_Msg2:
    __mEsect_Cel    006,_Msg_koi1,__Msg_koi1    ;「こいこいする?」0
    __mEsect_Cel    006,_Msg_koi2,__Msg_koi2    ;「こいこいする?」1
    __mEsect_Cel    006,_Msg_koi3,__Msg_koi3    ;「こいこいする?」2
    STOP

tAnm_Msg3:
    __mEsect_Anm    $ffff,tCel_Msg3
    STOP
tCel_Msg3:
    __mEsect_Cel    006,_Msg_hury1,__Msg_hury1  ;「札を切ってね」0
    __mEsect_Cel    006,_Msg_hury2,__Msg_hury2  ;「札を切ってね」1
    __mEsect_Cel    006,_Msg_hury3,__Msg_hury3  ;「札を切ってね」2
    STOP

tAnm_Yes_KB:
    __mEsect_Anm    $ffff,tCel_Yes_KB
    STOP
tCel_Yes_KB:
    __mEsect_Cel    006,_MsgM_yes1,__MsgM_yes1  ;YesA(明)0
    __mEsect_Cel    006,_MsgM_yes2,__MsgM_yes2  ;YesA(明)1
    __mEsect_Cel    006,_MsgM_yes3,__MsgM_yes3  ;YesA(明)2
    STOP

tAnm_No_KB:
    __mEsect_Anm    $ffff,tCel_No_KB
    STOP
tCel_No_KB:
    __mEsect_Cel    006,_MsgM_no1,__MsgM_no1    ;NoN(明)0
    __mEsect_Cel    006,_MsgM_no2,__MsgM_no2    ;NoN(明)1
    __mEsect_Cel    006,_MsgM_no3,__MsgM_no3    ;NoN(明)2
    STOP

;-----------------------------------------------------------------------------
        end

        mov.w   r24,r0          ;
    mov.w   r25,r1          ;
    sha.w   #-16,r1         ;
    movt.wh r1,r1           ;
    add.h   #Hpos_CPUColKs,r1   ;
    mov.h   #Vpos_CPUColKs,r2   ;

    jsr _Fuda_Dir_Pos_Set   ;
    add.w   r11,r25         ;
loop_GetFuda_Arg_AgnC00:        ;
    dec.w   r15         ;
    bnz job_GetFuda_Arg_AgnC00  ;

;-----------------------------------------------------------------------------
init_