📄 search.asm
字号:
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 + -