We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
Notes:Super Real Hanafuda: Koi Koi Shimasho 2
Jump to navigation
Jump to search
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_