📄 showhand.asm
字号:
; ***************************************************************************
; * Project : Electronic Dictionary *
; * Date : 2003.9 *
; * File Name : SHOWHAND.ASM *
; ***************************************************************************
chip W65C02S
pw 128
case off
externs on
include st2202.def ;; Include ST2100 I/O define.
include Data.def ;; Data RAM define.
include Keydef.def
include graph.def
include showhand.def
include bios.h
include graphics.h
DS0 .SECTION ;; Data ROM location 10000h(Bank#2)
blank_pai:
db 24,36
db 11111111b,11111111b,11111111b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 10000000b,00000000b,00000001b
db 11111111b,11111111b,11111111b
HoldWhite:
db 22,9
db 00000000b,00000000b,00000001b,00101111b,01000011b,10000100b,10100101b,00001001b
db 00010010b,10010100b,00100100b,01111010b,01010000b,10010001b,00101001b,01000010b
db 01000100b,10100101b,00001001b,00010010b,11110111b,10111000b,00000000b,00000000b
db 00000000b
ShowHandArrow:
db 7,9
db 00010000b,01110001b,11110111b,11110000b,00011111b,11011111b,00011100b,00010000b
;;ShowHandBlank:
;; db 20,24
;; db 11111111b,11111111b,11111000b,00000000b,00000001b,10000000b,00000000b,00011000b
;; db 00000000b,00000001b,10000000b,00000000b,00011000b,00000000b,00000001b,10000000b
;; db 00000000b,00011000b,00000000b,00000001b,10000000b,00000000b,00011000b,00000000b
;; db 00000001b,10000000b,00000000b,00011000b,00000000b,00000001b,10000000b,00000000b
;; db 00011000b,00000000b,00000001b,10000000b,00000000b,00011000b,00000000b,00000001b
;; db 10000000b,00000000b,00011000b,00000000b,00000001b,10000000b,00000000b,00011000b
;; db 00000000b,00000001b,10000000b,00000000b,00011000b,00000000b,00000001b,10000000b
;; db 00000000b,00011111b,11111111b,11111111b
ShowHandHeart:
db 7,8
db 01101101b,11111111b,11111111b,11111111b,11101111b,10001110b,00001000b
ShowHandDiamond:
db 7,8
db 00010000b,01110001b,11110111b,11111111b,11101111b,10001110b,00001000b
ShowHandCry:
db 16,16
db 00000111b,11100000b,00011111b,11111000b,00111111b,11111100b,01111111b,11111110b
db 01101011b,11010110b,11110111b,11101111b,11101011b,11010111b,11111111b,11111111b
db 11111111b,11111111b,11111111b,11111111b,11111100b,00111111b,11111011b,11011111b
db 01110111b,11101110b,00111111b,11111100b,00011111b,11111000b,00000111b,11100000b
ShowHandSmile:
db 16,16
db 00000111b,11100000b,00011000b,00011000b,00100000b,00000100b,01000000b,00000010b
db 01000000b,00000010b,10111111b,11111101b,11111110b,01111111b,10011100b,00111001b
db 10001000b,00010001b,10000000b,00000001b,10001000b,00010001b,10000100b,00100001b
db 01000011b,11000010b,00100000b,00000100b,00011000b,00011000b,00000111b,11100000b
ShowHandClub:
db 7,8
db 00111000b,11111001b,11110111b,11111111b,11101111b,10000100b,00011100b
ShowHandSpade:
db 7,8
db 00010000b,01110001b,11110111b,11111111b,11111111b,11000100b,00011100b
ShowHandBetTitle:
db '赌注:',0 ;;赌注
ShowHandBetTitleMask:
db ' ',0
FONTA:
db 7,9
db 00010000b,01110001b,10110110b,00111100b,01111111b,11110001b,11100011b,11000110b
FONTJ:
db 7,9
db 00011110b,00011000b,00110000b,01100000b,11000001b,10110011b,01100110b,01111000b
FONTQ:
db 7,10
db 01111101b,10001111b,00011110b,00111100b,01111010b,11110111b,10111110b,00001100b
db 00011100b
FONTK:
db 7,9
db 11100110b,11001101b,10110011b,01100111b,10001101b,10011011b,00110011b,11100110b
SHStatusTable:
db 00000100b ;;一对
db 00001000b ;;二对
db 00010000b ;;三条
db 10000000b ;;顺子
db 01000000b ;;筒花
db 00010100b ;;耗子(吃糊)
db 00100000b ;;四条
db 11000000b ;;同花顺
BankruptTitle:
db ' >>','你破产了','<<',0 ;;你破产了
PS0b .SECTION ;; Program ROM location 4000h
;;=====================================================
BankNo equ GameBank
Public ShowHandStart ;;.
public ShowHandKeyin ;; Key Down
public ShowHandTimer ;; Timer
public ShowHandHalfSec
;;=====================================================
;; 梭哈游戏程式区
;;
;;=====================================================
ShowBetTitle: ;;
lda #56+32 ;;
sta <ox ;;
lda #0+4 ;;
sta <oy ;;
ldx #>ShowHandBetTitle ;; 显示赌注
ldy #<ShowHandBetTitle ;;
LDrawText ;;
rts ;;
ShootStart: ;;
ShowHandStart:
lsetscreen 0
lda #02h ;; 预设赌金200
sta <SHScoreH ;;
stz <SHScoreL ;; 赌注5
lda #5 ;;
sta <Bet ;;
ShowHandStart1:
LClrLcd ;; 清除萤幕
jsr ShowScore ;; 显示赌金
jsr ShowBetTitle ;; 显示"赌注"
lda #145
sta <ox
lda #3+4
sta <oy
loprintimage ShowHandArrow ;;显示赌注箭头
jsr ShowBet ;;显示赌注
lda #00011111b ;;
sta <CoverCard ;;
jsr ShowAllBlank ;;显示全部空牌
ldx #0
lda #0ffh
?1: sta <Card1,x ;; 清除全部牌点牌色
inx ;;
cpx #5 ;;
bne ?1 ;;
jsr GetCardValue ;; 取得空牌新牌点及牌色
smb6 <FlashOpt
smb7 <SHBetStatus ;;设定目前为设定赌注状态
rmb7 <WinFlag ;;清除win 旗标
jmp jmplmainu
SHEnterKey1:
jmp SHEnterKey
ShootKeyin: ;; Key Down 事件处理向量
ShowHandKeyIn: ;; Key Down 事件处理向量
lda <KeyNo
cmp #EnterKey
beq SHEnterKey1
bbs7 <WinFlag,?1
cmp #UpKey
beq SHUpKey
cmp #DownKey
beq SHDownKey
cmp #LeftKey
beq SHLeftKey
cmp #RightKey
beq SHRightKey
?1:
jmp jmplmainu
SHUpkey:
LKeyTone
bbr7 <SHBetStatus,?SHUpKeyNBet
jsr AddBet
jmp ShowBetandScore
?SHUpKeyNBet:
jmp ShDownKeyNBet
SHDownKey:
LKeyTone
bbr7 <SHBetStatus,ShDownKeyNBet
jsr SubBet
jmp ShowBetandScore
ShDownKeyNBet:
ldx <CardIndex
lda ValueTran,x
eor <CoverCard
sta <CoverCard
jsr ShowIndexHold
jmp jmplmainu
SHLeftKey:
LKeyTone
bbr7 <SHBetStatus,?SHLeftKeyNBet
jsr AddBet
jmp ShowBetandScore
?SHLeftKeyNBet:
jsr ShowCard
dec <CardIndex
bpl ?1
lda #4
sta <CardIndex
?1:
jmp jmplmainu
SHRightKey:
LKeyTone
bbr7 <SHBetStatus,?ShRightKeyNBet
jsr SubBet
jmp ShowBetandScore
?ShRightKeyNBet:
jsr ShowCard
inc <CardIndex
lda <CardIndex
cmp #5
bne ?1
stz <CardIndex
?1:
jmp jmplmainu
SHEnterKey:
LKeyTone
;; LSetTimer 0
rmb6 <FlashOpt
bbr7 <SHBetStatus,SHEnterKeyNbet
rmb7 <SHBetStatus
smb6 <SHCoverStatus
LClrLcd
jsr ScoreSbcBet
jsr ShowScore
stz <CardIndex
lda #00011111b
sta <CoverCard
jsr ShowAllCard
;; LSetTimer 45
smb6 <FlashOpt
jmp jmplmainu
sShowHandStart1:
lda #0
cmp <SHScoreH
bne ?2
cmp <SHScoreL
bne ?1
LClrLcd
lda #24
sta <oy
lda #8
sta <ox
ldx #>BankruptTitle
ldy #<BankruptTitle
LDrawText
lda #2
sta <SHScoreH
jmp jmplmainu
?1: lda <SHScoreH
bne ?2
lda <SHScoreL
cmp <Bet
bcs ?2
sta <Bet
?2:
jmp ShowHandStart1
SHEnterKeyNbet:
bbs7 <WinFlag,sShowHandStart1
jsr ShowCard
jsr ShowAllBlank
stz <CardIndex
?0: jsr ShowHoldBlank
lda <CardIndex
inc <CardIndex
cmp #4 ;;5 modified by jrd 2001-11-03
bne ?0
?1: jsr GetCardValue
jsr delay250ms
jsr ShowAllCard
jsr SHJudgeScore
lda <scoretime
?3: dec
bmi ?2
pha
sed
lda <Bet
?4: sed
sec
sbc #1
bcc ?5
pha
clc
lda <SHScorel
adc #1
sta <SHScorel
lda <SHScoreH
adc #0
sta <SHScoreH
?6: cld
lda <SHScoreH
cmp #99h
bcc ?61
lda <SHScoreL
cmp #96h
bcc ?61
lda #95h
sta <SHScoreL
?61:
jsr ShowScore
pla
bra ?4
?5: cld
pla
bra ?3
?2:
smb6 <FlashOpt
jmp jmplmainu
ShowBetandScore:
jsr ShowBet
jmp jmplmainu
ShowHandTimer:
jmp jmplmainu
;; Timer 事件处理向量
;;*************************************************
;; 显示牌色
;;**************************************************
ShowCard: ;;
jsr ShowCardBlank ;;
inc <ox ;;
inc <ox ;;
inc <oy ;;
inc <oy ;;
ldx <CardIndex ;;
lda <Card1,x ;;
pha ;;
and #00110000b ;;
cmp #00000000b ;;
beq ?showheart ;;
cmp #00010000b ;;
beq ?showdiamond ;;
cmp #00100000b ;;
beq ?showspade ;;
?showclub:
loprintimage ShowHandClub
bra ?2
?Showheart:
loprintimage ShowHandHeart
bra ?2
?ShowDiamond:
loprintimage ShowHandDiamond
bra ?2
?ShowSpade
loprintimage ShowHandSpade
?2: lda #35+4+12
sta <oy
clc
lda <ox
adc #7
sta <ox
pla
and #00001111b
cmp #8
bcc ?3
beq ?show10
cmp #9
beq ?showJ
cmp #10
beq ?Showq
cmp #11
beq ?showK
?ShowA: loprintimage FontA
rts
?ShowJ: loprintimage FontJ
rts
?ShowQ: loprintimage FontQ
rts
?ShowK: loprintimage FontK
rts
?show10:clc
lda #2
adc <ox
sta <ox
ldx #0
LDrawNum
sec
lda <ox
sbc #7
sta <ox
ldx #1
LDrawNum
rts
?3: inc
inc
tax
LDrawNum
rts
HideCard:
lda #31+4 ;;24+4
sta <oy
lda #8
sta <ox
lda <CardIndex
?1: dec
bmi ?HideCardRet
pha
clc
lda <ox
adc #30
sta <ox
pla
bra ?1
?HideCardRet:
LoClrImage blank_pai
rts
ShowCardBlank:
lda #42+4 ;;24
sta <oy
lda #8 ;;5
sta <ox
lda <CardIndex
?1: dec
bmi ?BlankCardRet
pha
clc
lda <ox
adc #30 ;;22
sta <ox
pla
bra ?1
?BlankCardRet:
jsr SShowcardblank
rts
ShowAllBlank:
stz <CardIndex
lda <CoverCard
?1: beq ?2
lsr
bcc ?3
pha
jsr ShowCardBlank
pla
?3: inc <CardIndex
bra ?1
?2: rts
HideAllCard:
stz <CardIndex
lda <CoverCard
?1: beq ?2
lsr
bcc ?3
pha
jsr HideCard
pla
?3: inc <CardIndex
bra ?1
?2: rts
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -