⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 showhand.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 2 页
字号:
ShowAllCard:
        stz     <CardIndex
        lda     <CoverCard
?1:     beq     ?2
        lsr
        bcc     ?3
        pha
        bbs7    <WinFlag,?4
       PlayMelody      SpcSound
?4:     jsr     ShowCard
        bbs7    <Winflag,?5
        jsr     Delay250ms

?5:     bbs2    <IENAB,?5
        pla
?3:     inc     <CardIndex
        bra     ?1
?2:     rts
ShowIndexHold:
        ldx     <CardIndex
        lda     <CoverCard
?1:     lsr
        dex
        bpl     ?1
        bcc     ?2
        jsr     ShowHoldBlank
        rts
?2:     jsr     ShowHoldW
        rts
ShowHoldW:
        jsr     ShowHoldLocate
        loprintimage      HoldWhite
        rts
ShowHoldBlank:
        jsr     ShowHoldLocate
        LoClrImage        HoldWhite
        rts
ShowHoldLocate:
        lda     #14+8  ;;14+4
        sta     <oy
        lda     #8
        sta     <ox
        lda     <CardIndex
?1:     dec
        bmi     ?2
        pha
        clc
        lda     <ox
        adc     #30
        sta     <ox
        pla
        bra     ?1
?2:     rts

GetCardValue:
        ldx     #0              ;;  ┓
        lda     <CoverCard      ;;    依序比较5张牌
?clrcard:                       ;;    如为盖牌,则重新
        lsr                     ;;    给予新值
        bcc     ?clrCardValue   ;;
        pha                     ;;
        lda     #0ffh           ;;
        sta     <Card1,x        ;;
        pla                     ;;
?clrCardValue:                  ;;
        inx                     ;;
        cpx     #5              ;;
        bne     ?Clrcard        ;;  ┛

        stz     <CardIndex
        lda     <CoverCard
        sta     <CardTemp       ;; 保存covercard的值
?0:     lda     <CardTemp
        beq     ?2              ;; 如果covervard=0 (即无盖牌) 则返回
        lsr     <CardTemp
        bcc     ?1
?01:
        LNxSeed                 ;;读取乱数值
        lda     <Seed           ;;
        adc     <ShowHandRand
        pha
        and     #00001111b      ;;牌点小於13时,重新取牌值
        cmp     #13             ;;
        pla
        bcs     ?01             ;;
;;        lda     <Seed           ;;
        and     #00111111b      ;;将牌值牌色存入卡片
        ldx     <CardIndex      ;;
        sta     <Card1,x        ;;
        phx
?3:     dex
        bmi     ?5
        cmp     <Card1,x        ;;与前几张牌比较
        beq     ?02             ;;如果相同则重新取牌
        bra     ?3
?02:    plx
        bra     ?01
?5:
        plx
?4:     inx                     ;;
        cpx     #5              ;;是否与後几张牌相同
        beq     ?1              ;;
        cmp     <Card1,x        ;;
        beq     ?01             ;;
        bra     ?4
?1:
        inc     <CardIndex
        bra     ?0
?2:     rts

ShowBet:
        lda     #3+4
        sta     <oy
        lda     #89+40
        sta     <ox
        lda     <Bet
        and     #11110000b
        beq     ?HideBetH
        lsr
        lsr
        lsr
        lsr
        tax
        LDrawNum
        bra     ?ShowBetL
?HideBetH:
        lda     <ox
        sta     <lcd_ox
        lda     <oy
        sta     <lcd_oy
        LClrNum
?ShowBetL:
        lda     #97+40
        sta     <ox
        lda     <Bet
        and     #00001111b
        tax
        LDrawNum
        rts
ShowScore:
        lda     #3+4
        sta     <oy
        lda     #1
        sta     <ox
        lda     <SHScoreH
        and     #11110000b
        bne     ?1
        lda     <ox
        sta     <lcd_ox
        lda     <oy
        sta     <lcd_oy
        LClrNum
        lda     #9
        sta     <ox
        lda     <SHScoreH
        bne     ?2
        lda     <ox
        sta     <lcd_ox
        lda     <oy
        sta     <lcd_oy
        LClrNum
        lda     #17
        sta     <ox
        lda     <ShScoreL
        and     #11110000b
        bne     ?3
        lda     <ox
        sta     <lcd_ox
        lda     <oy
        sta     <lcd_oy
        LClrNum
        bra     ?4
?1:     lsr
        lsr
        lsr
        lsr
        tax
        LDrawNum
        lda     #9
        sta     <ox
        lda     <SHScoreH
        and     #00001111b
?2:     tax
        LDrawNum
        lda     #17
        sta     <ox
        lda     <SHScoreL
?3:     lsr
        lsr
        lsr
        lsr
        tax
        LDrawNum
?4:     lda     #25
        sta     <ox
        lda     <ShScoreL
        and     #00001111b
        tax
        LDrawNum
        rts
ScoreSbcBet:
        sed
        sec
        lda     <SHScoreL
        sbc     <Bet
        sta     <SHScoreL
        lda     <SHScoreH
        sbc     #0
        sta     <SHScoreH
        cld
        rts

AddBet: lda     <Bet
        cmp     <SHScoreL
        bne     ?1
        lda     <SHScoreh
        bne     ?1
        lda     #5
        sta     <Bet
        rts
?1:     sed
        clc
        lda     #5
        adc     <Bet
        cmp     #25H
        bne     ?2
        lda     #5
?2:     sta     <Bet
        cld
        rts

SubBet: lda     <Bet
        sed
        sec
        sbc     #5
        bne     ?2
        lda     <SHScoreH
        bne     ?3
        lda     <SHScoreL
        cmp     #20h
        bcs     ?3
        lda     <SHScoreL
        bra     ?2
?3:     lda     #20h
?2:     sta     <Bet
        cld
        rts
SHJudgeScore:
        stz     <CoverCard
        stz     <ScoreStatus
        stz     <scoretime
        jsr     SHCmpStraight
        jsr     SHCmpFlush
        jsr     SHCmpPair
        smb6    <Winner
        stz     <ScoreTime
        lda     ScoreStatus
        ldx     #0
?0:     cmp     SHStatusTable,x
        beq     ?1
        inx
        cpx     #8
        bcc     ?0
        PlayMelody      LostSong
        bra     ?2
?1:     rmb6    <Winner
        txa
        inc
        sta     <scoretime
        PlayMelody      WinSong
?2:     smb7    <Winflag
        rmb6    <SHCoverStatus
        rts

SHCmpStraight:
        stz     <CardIndex
        ldx     #0
?1:     lda     <Card1,x                ;;  ┓
        and     #00001111b              ;;    Card 存至 CardTemp
        sta     <CardTemp1,x            ;;
        inx                             ;;
        cpx     #5                      ;;
        bne     ?1                      ;;  ┛

        ldy     #3                      ;;  ┓
?2:     ldx     #0                      ;;
?3:     lda     <CardTemp1,x            ;;    CardTemp排序
        cmp     <CardTemp1+1,x          ;;
        bcs     ?4                      ;;
        pha                             ;;    CardTemp1       >CardTemp5
        lda     <CardTemp1+1,x          ;;       大              小
        sta     <CardTemp1,x            ;;
        pla                             ;;
        sta     <CardTemp+1,x           ;;
?4:     inx                             ;;
        cpx     #4                      ;;
        bne     ?3                      ;;
        dey                             ;;
        bpl     ?2                      ;;  ┛
?6:     ldx     #0
?5:     sec
        lda     <CardTemp1,x
        sbc     <CardTemp1+1,x
        cmp     #1
        bne     ?NoStraight
        inx
        cpx     #4
        bne     ?5
        smb7    <Straight
        lda     #00011111b
        sta     <CoverCard
?NoStraight:
        cpx     #0
        bne     ?StraightRet
        lda     <CardTemp1
        cmp     #12
        bne     ?StraightRet
        lda     #4
        sta     <CardTemp1
        bra     ?6
?StraightRet:
        rts
SHCmpFlush:
        stz     <CardIndex
        ldx     #0
?1:     lda     <Card1,x
        and     #00110000b
        sta     <CardTemp1,x
        inx
        cpx     #5
        bne     ?1
        ldx     #0
?2:     lda     <CardTemp1,x
        cmp     <CardTemp1+1,x
        bne     ?3
        inx
        cpx     #4
        bne     ?2
        smb6    <Flush
        lda     #00011111b
        sta     <CoverCard
?3:     rts
SHCmpPair:
        ldx     #0
?1:     lda     <Card1,x
        and     #00001111b
        sta     <Cardtemp1,x
        inx
        cpx     #5
        bne     ?1

        stz     <SHPairNum
        stz     <CardIndex
?2:     ldx     <CardIndex
        lda     <CardTemp1,x
?3:
        cmp     <CardTemp1+1,x
        bne     ?5
        pha
        phx
        sta     <SHPairValue
        inc     <SHPairNum
        lda     ValueTran+1,x
        ora     <CoverCard
        sta     <CoverCard
        ldx     <CardIndex
        lda     ValueTran,x
        ora     <CoverCard
        sta     <CoverCard
        plx
        pla

?5:     inx
        cpx     #4
        bne     ?3
        lda     <SHPairNum
        beq     ?6
        cmp     #3
        beq     ?7
        cmp     #2
        beq     ?8
        cmp     #1
        beq     ?9
?6:     inc     <CardIndex
        lda     <CardIndex
        cmp     #4
        bne     ?61
        bbr2    <OnePair,?62
        bbs4    <ThreeOfKind,?62
        lda     <SHPairValue
        cmp     #9
        bcs     ?62
        rmb2    <OnePair
?62:
        rts
?61:    ldx     <CardIndex
        lda     ValueTran,x
        and     <CoverCard
        beq     ?2
        bra     ?6
?7:     smb5    <FourOfKind
        rts
?8:     smb4    <ThreeOfKind
        stz     <SHPairNum
        bra     ?6
?9:     bbs2    <OnePair,?10
        smb2    <OnePair
        stz     <ShPairNum
        bra     ?6
?10:    rmb2    <OnePair
        smb3    <TwoPair
        rts
SShowCardBlank:
        lda     #31+4
        sta     <oy
;;       lda     #02
;;       sta     <ox
?draw_blank_pai:
        loprintimage  blank_pai
 ;;      clc
 ;;      lda     <ox
 ;;      adc     #30
 ;;      sta     <ox
 ;;      cmp     #150
 ;;      bcc     ?draw_blank_pai
        rts
ShowHandHalfSec:
        inc     <ShowHandRand
        bbs6    <FlashOpt,?K1
        jmp     jmplmainu
?K1:
        lda     #00000001b
        eor     <FlashFlag
        sta     <FlashFlag
        bbr7    <SHBetStatus,?notbetstatus
?showbet:
        bbs0    <FlashFlag,?showbet1
?hidebet:
        lda     #56+32
        sta     <ox
        lda     #0+4
        sta     <oy
        ldx     #>ShowHandBetTitleMask
        ldy     #<ShowHandBetTitleMask
        LDrawText
        jmp     jmplmainu
?showbet1:
        jsr     ShowBetTitle
        jmp     jmplmainu
?notbetstatus:
        bbr6    <SHCoverStatus,?notCoverStatus
        bbs0    <FlashFlag,?hideCard1
        jsr     ShowCard
        jmp     jmplmainu
?HideCard1:
        jsr     HideCard
        jmp     jmplmainu

?notCoverStatus:
        lda     #64
        sta     <ox
        lda     #0+4
        sta     <oy
        bbs0    <FlashFlag,?HideWinTitle
?ShowWintitle:
        bbs6    <Winner,?ShowCry
        loprintimage      ShowHandSmile
        jsr     ShowAllCard
        jmp     jmplmainu
?ShowCry:
        loprintimage      ShowHandCry
        jmp     jmplmainu
?HideWinTitle:
        LoClrImage   ShowHandCry
        bbs6    <Winner,?ret
        jsr     HideAllCard
?ret:
jmplmainu:
        lda     <keyno
        cmp     #EnterKey
        beq     ?dsfdsif
        cmp     #RightKey
        beq     ?dsfdsif

        rmb3    <eflag
?dsfdsif:
        Lmainu
       end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -