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

📄 search.asm

📁 完整的方案
💻 ASM
📖 第 1 页 / 共 2 页
字号:
PaiDealMask:  .EQU   HadDealBit|FirstKnockBit|SecondKnockBit|ThirdKnockBit|ForthKnockBit
PaiDealMask_: .EQU   HadDealBit_&FirstKnockBit_&SecondKnockBit_&ThirdKnockBit_&ForthKnockBit_
SoundMask:    .EQU   ReadyPlayBit|PlayIndexBit
SoundMask_:   .EQU   ReadyPlayBit_&PlayIndexBit_

MessBank:               .EQU _Tmp1
MessAddr:               .EQU _Tmp2
MessSerious:            .EQU _Tmp3
MessFileNum:            .EQU _Tmp4
YUpCoord:               .EQU _Tmp5
XLeftCoord:             .EQU _Tmp6
YDownCoord:             .EQU _Tmp7
YRightCoord:            .EQU _Tmp8
dRecord:                .EQU 1
dPlayRecord:            .EQU 2
dPlaySound:             .EQU 3

dStandardBlock:         .EQU 0
dBlankWithSound:        .EQU 1
dLowVoltageDeal:        .EQU 2
dPaiAwayDeal:           .EQU 3
dPai1Knock:             .EQU 4
dPai2Knock:             .EQU 5
dPai3Knock:             .EQU 6
dPai4Knock:             .EQU 7
dPaiSame1Block:         .EQU 8
dPaiSame2Block:         .EQU 9
dPaiGroundBlock:        .EQU 10
dPaiInAway:             .EQU 11
dPaiToAway:             .EQU 12
dBlankNoSound:          .EQU 13
dDealNoFunction:        .EQU 14
dDisableCoord:          .EQU 15
dHadDeal:               .EQU 16
dPaiJustBlock:          .EQU 17 
dPaiBlank:              .EQU 18 


.INCLUDE XYD.ASM
.INCLUDE DSL.ASM

DealCoord:
         CALL TestDiCoord
         CMP R1, 0
         JE DealCoordGo
         RETF

DealCoordGo:
         R1=[_SysFlagA]
         TEST R1,PaiStatuBit
         JNE DealCoord1
DealCoord0:                            // In statu of away
         R1=[_YCoord]
         CMP R1,0xff
         JNE DealCoord0_1        
DealCoord0PaiAway:
         R1=dPaiInAway
         RETF

DealCoord0_1:
         CALL InitPaiDown
         PC=DealNormalCoord
DealCoord1:
         R1=[_YCoord]
         CMP R1,0xff
         JE DealCoord1_0
         PC=DealNormalCoord
DealCoord1_0:
DealCoord1PaiAway:
         R1=[_SysFlagA]
         R1&=PaiStatuBit_
         [_SysFlagA]=R1
         TEST R1,HadDealBit
         JE DealCoord1_0_
         R1=dPaiToAway
         RETF

DealCoord1_0_:
         R1=[_SysFlagA]
         TEST R1,ForthKnockBit
         JNE  NorPaiAway4Knock
         TEST R1,ThirdKnockBit
         JNE  NorPaiAway3Knock
         TEST R1,SecondKnockBit
         JNE  NorPaiAway2Knock
NorPaiAway1Knock:
         R1=[_XOld1]
         [_XValue]=R1
         R1=[_YOld1]
         [_YValue]=R1
         PC=DealCoordIn
NorPaiAway2Knock:
NorPaiAway3Knock:
         R1=[_XOld2]
         [_XValue]=R1
         R1=[_YOld2]
         [_YValue]=R1
         PC=DealCoordIn
NorPaiAway4Knock:
         R1=[_XOld1]
         R1+=[_XOld2]
         R1+=1
         R1 = R1 LSR 1
         [_XValue]=R1
         R1=[_YOld1]
         R1+=[_YOld2]
         R1+=1
         R1 = R1 LSR 1
         [_YValue]=R1
         PC=DealCoordIn

DealNormalCoord:
DealNormalCoord_:
         R1=[_SysFlagA]
         TEST R1,FirstKnockBit
         JNE DealCoordReg2
DealCoordReg1:
         R1|=FirstKnockBit
         [_SysFlagA]=R1
         R1=[_XCoord]
         [_XOld1]=R1
         R1=[_YCoord]
         [_YOld1]=R1
         R1=dPai1Knock
         RETF
DealCoordReg2:
         TEST R1,SecondKnockBit
         JNE DealCoordReg3
         R1|=SecondKnockBit
         [_SysFlagA]=R1
         R1=[_XCoord]
         [_XOld2]=R1
         R1=[_YCoord]
         [_YOld2]=R1
         R1=dPai2Knock
         RETF
DealCoordReg3:
         TEST R1,ThirdKnockBit
         JNE DealCoordReg4
         R1|=ThirdKnockBit
         [_SysFlagA]=R1
         R1=[_XCoord]
         [_XOld3]=R1
         R1=[_YCoord]
         [_YOld3]=R1
         R1=dPai3Knock
         RETF
DealCoordReg4:
         TEST R1,ForthKnockBit
         JNE DCRSmoothX
         R1|=ForthKnockBit
         [_SysFlagA]=R1
         R1=[_XCoord]
         [_XOld4]=R1
         R1=[_YCoord]
         [_YOld4]=R1
         R1=dPai4Knock
         RETF

DCRSmoothX:
         R1=[_XOld2]
         R1+=[_XOld3]
         R1+=[_XOld4]
         R2=0x5555
         MR=R2*R1, us
         TEST R3, BitF
         JE DCRSmoothX_       
         R4+=1
DCRSmoothX_:
         [_XValue]=R4
DCRSmoothY:         
         R1=[_YOld2]
         R1+=[_YOld3]
         R1+=[_YOld4]
         R2=0x5555
         MR=R2*R1, us
         TEST R3, BitF
         JE DCRSmoothY_       
         R4+=1
DCRSmoothY_:
         [_YValue]=R4
         R1=[_XOld4]
         R1+=0x10
         R1-=[_XCoord]
         CMP R1, 0x20
         JNB DealCoordIn

         R1=[_YOld4]
         R1+=0x18
         R1-=[_YCoord]
         CMP R1, 0x30
         JNB DealCoordIn

         R1=[_XOld2]
         [_XOld1]=R1
         R1=[_YOld2]
         [_YOld1]=R1

         R1=[_XOld3]
         [_XOld2]=R1
         R1=[_YOld3]
         [_YOld2]=R1

         R1=[_XCoord]
         [_XOld3]=R1
         R1=[_YCoord]
         [_YOld3]=R1

         R1=[_XCoord]
         [_XOld4]=R1
         R1=[_YCoord]
         [_YOld4]=R1

DealCoordIn:
         R1=[_SysFlagA]
         TEST R1, HadDealBit
         JE DealCoordIn_
         R1=dHadDeal
         RETF
DealCoordIn_:
         R1=[_SysFlagA]
         R1|=HadDealBit
         [_SysFlagA]=R1

         R1=[_BookMark]
         TEST R1, XYDBookBit
         JE DealCoordDSL
         PC=DealCoordXYD
DealCoordDSL:
         R1=[_SeriousFlag]
         TEST R1, SeriousSelectionBit
         JE DealCoordNew2
DealCoordQuestion:
         CALL CmpCoord
         CMP R1, 0
         JE DealCoordAnswerErr
DealCoordAnswerOK:
         R1=[_QuestionFlag]
         R1&=HaveSelectionQuestionBit_
         [_QuestionFlag]=R1
         R1=9
         CALL PlayDSLSys
         RETF
DealCoordAnswerErr:
         R1=[_RandomBase]
         R1&=0x0f
         [_SeriousCount]=R1
         R1=10
         CALL PlayDSLSys
         R1=[_ErrTime]
         R1-=1
         JE DealCoordAnswerErrFinish
         [_ErrTime]=R1
         RETF
DealCoordAnswerErrFinish:
         R1=[_QuestionFlag]
         R1&=HaveSelectionQuestionBit_
         [_QuestionFlag]=R1
         RETF

DealCoordNew2:         
         R4=[_CoordBank]
         R3=[_CoordAddr]
         CALL GetNorBlock
//         R2=[_XValue]
//         R2+=XChgTab
//         R1=[R2]
//         R2=[_YValue]
//         R2+=YChgTab
//         R2=[R2]
//         R1+=R2
//         R5=R1
//         CALL HexDec
//         CALL TxWord
//         CALL DiUart

//         R1=R5
//         R1+=2
//         CALL NandAddrAdd
//         CALL ReadNandByte
         CMP R1, [_PlayBlock]
         JE DealCoordSame
DealCoordDiff:
         [_PlayBlock]=R1
         R1=0
         [_SeriousCount]=R1
         JMP DealCoordTestEdit
DealCoordSame:
         R1=[_SeriousCount]
         R1+=1
         [_SeriousCount]=R1

DealCoordTestEdit:
         R1=[_EditFlag]
         TEST R1, InEditBit
         JE DealCoordTestEdit2
         PC=DealCoordToEdit
DealCoordTestEdit2:
         TEST R1, EditModeBit
         JE DealCoordNormal
DealCoordPlayEdit3:
         R3=[_EditOrgAddr]
         R4=[_EditOrgBank]
         R1=[_PlayBlock]
         CALL CmpWord
         CMP R1, 0
         JNE DealCoordPlayEdit4
         [_SeriousCount]=R1
         JMP DealCoordNormal_
DealCoordPlayEdit4:
         R1=[_SeriousCount]
         JNE DealCoordPlayEdit5
         R1+=1
DealCoordPlayEdit5:
         [_SeriousCount]=R1
         TEST R1, Bit0
         JE DealCoordNormal_
DealCoordPlayEdit6:         
         R3=[_EditOrgAddr]
         R4=[_EditOrgBank]
         R1=R5 LSL 2
         R1+=[_HowManyEditBlock]
         R1+=[_HowManyEditBlock]
         CALL NandAddrAdd
         CALL ReadNandAddr
         R1=R3
         R1&=R4
         CMP R1, 0xffff
         JE DealCoordNormal
         [_PlayStartAddr]=R3
         [_PlayStartBank]=R4
         CALL _RecPlay
         RETF
DealCoordNormal:
         R1=[_RecordFlag]
         R1|=HadSoundBit
         [_RecordFlag]=R1
         R3=[_PlayAddr]
         R4=[_PlayBank]
         //[_RecRegAddr]=R3
         //[_RecRegBank]=R4
DealCoordNormal_:
         CALL PlayDSLSoundGroup
         [_RecRegAddr]=R3
         [_RecRegBank]=R4
DealCoordEnd:
         RETF

DealCoordToEdit:
         R1=0
         [_PlayLengthL]=R1
         [_PlayLengthH]=R1
         R3=[_No7Addr]
         R4=[_No7Bank]
         R1=[_PlayBlock]
         CALL CmpWord
         CMP R1, 0
         JE DealCoordNormal_
         R3=[_EditOrgAddr]
         R4=[_EditOrgBank]
         R1=[_PlayBlock]
         CALL CmpWord
         CMP R1, 0
         JE DealCoordToEditPlay
         PC=DealCoordPlayEdit6
DealCoordToEditPlay:
         R1=[_EditFlag]
         R1|=ToHintBit
         [_EditFlag]=R1
         R1=0
         [_SeriousCount]=R1
         JMP DealCoordNormal_


DealCoordXYD:

⌨️ 快捷键说明

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