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

📄 search.asm

📁 完整的方案
💻 ASM
📖 第 1 页 / 共 2 页
字号:
         R1=[_XValue]
         CMP R1, [_XMinGate]
         JB DealCoordZeroPage
         CMP R1, [_XMaxGate]
         JA DealCoordZeroPage
         R1=[_YValue]
         CMP R1, [_YMinGate]
         JB DealCoordZeroPage
         CMP R1, [_YMaxGate]
         JNA DealCoordNormalPage
DealCoordZeroPage:
         R4=[_ZeroPMBank]
         R3=[_ZeroPMAddr]
         JMP DCSearchBlock
DealCoordNormalPage:
         R4=[_CurrentPMBank]
         R3=[_CurrentPMAddr]
DCSearchBlock:
         R1=0 
         [_CurrentSearchingBlock]=R1
         [_NandAddrL]=R3
         [_NandAddrH]=R4
DCSearchBlock_:         
         CALL SetSearchingAddr
         R5=R3|0xfe00
         JMP DCSearchBlock1
DCSearchBlock0:
         R5+=1
         JCC DCSearchBlock1
         CALL ChgSearchingAddr
DCSearchBlock1:
         RBYTE_
         CMP R1,0xff
         JNE DCSearchBlock2
         PC=DealCoordBlank
DCSearchBlock2:
         CMP R1,[_YValue]
         JA DCSearchBlockSkip1
         R5+=1
         JCC DCSearchBlock3
         CALL ChgSearchingAddr        
DCSearchBlock3:
         RBYTE_
         CMP R1,[_XValue]
         JA DCSearchBlockSkip2
         R5+=1
         JCC DCSearchBlock4
         CALL ChgSearchingAddr       
DCSearchBlock4:
         RBYTE_
         CMP R1,[_YValue]
         JB DCSearchBlockSkip3
         R5+=1
         JCC DCSearchBlock5
         CALL ChgSearchingAddr       
DCSearchBlock5:
         RBYTE_
         CMP R1,[_XValue]
         JB DCSearchBlockSkip4
         PC=DCSearchBlockOk
DCSearchBlockSkip1:
         R5+=1
         JCC DCSearchBlockSkip1_
         CALL ChgSearchingAddr    
DCSearchBlockSkip1_:
         RBYTE2
DCSearchBlockSkip2:
         R5+=1
         JCC DCSearchBlockSkip2_
         CALL ChgSearchingAddr  
DCSearchBlockSkip2_:
         RBYTE2
DCSearchBlockSkip3:
         R5+=1
         JCC DCSearchBlockSkip3_
         CALL ChgSearchingAddr        
DCSearchBlockSkip3_:
         RBYTE2
DCSearchBlockSkip4:
         R5+=1
         JCC DCSearchBlockSkip4_
         CALL ChgSearchingAddr      
DCSearchBlockSkip4_:
         RBYTE_
         JNE DCSearchBlockSkip5
         PC=DCSearchBlock0

DCSearchBlockSkip5:
         R2=[_CurrentSearchingBlock]
         R2+=1
         [_CurrentSearchingBlock]=R2
         R2=R1 LSL 1
         R1+=R2
         R5+=R1
         JCS DCSearchBlockSkip8
//         CMP R1, 0x30
//         JCS DCSearchBlockSkip7
//         R3=R1
//DCSearchBlockSkip6:
//         RBYTE2
//         R3-=1
//         JNE DCSearchBlockSkip60
//         PC=DCSearchBlock0
DCSearchBlockSkip7:
         R3=[_NandAddrL]
         R3&=0xfe00
         R1=R5&0x1ff
         R3|=R1
         R3+=1
         JCC DCSearchBlockSkip7_
         R4=[_NandAddrH]
         R4+=1
         [_NandAddrH]=R4
DCSearchBlockSkip7_:        
         [_NandAddrL]=R3
         PC=DCSearchBlock_
DCSearchBlockSkip8:
         R5+=1
         CALL ChgSearchingAddr
         PC=DCSearchBlock1
DCSearchBlockOk:
DCSearchBlockOkSkip:
         R5+=1
         JCC DCSearchBlockOkSkip1
         CALL ChgSearchingAddr       
DCSearchBlockOkSkip1:
         RBYTE_
         JNE DCRegisterData
         R5+=1
         JCC DCSearchBlockOkSkip2
         CALL ChgSearchingAddr       
DCSearchBlockOkSkip2:
         RBYTE2
         R5+=1
         JCC DCSearchBlockOkSkip3
         CALL ChgSearchingAddr       
DCSearchBlockOkSkip3:
         RBYTE2
         R5+=1
         JCC DCSearchBlockOkSkip4
         CALL ChgSearchingAddr       
DCSearchBlockOkSkip4:
         RBYTE2
         R5+=1
         JCC DCSearchBlockOkSkip5
         CALL ChgSearchingAddr       
DCSearchBlockOkSkip5:
         RBYTE2
         PC=DCSearchBlockOkSkip
DCRegisterData:
         R2=[_SeriousCount]
         R2+=1
         R1=[_CurrentSearchingBlock]
         CMP R1, [_PlayBlock]
         JE DCRegisterData_
         [_PlayBlock]=R1
         R2=0
DCRegisterData_:
         [_SeriousCount]=R2
         DATAOUT
         R3=[_NandAddrL]
         R4=[_NandAddrH]
         R3&=0xfe00
         R5&=0x1ff
         R3|=R5
         CALL PlayXYDBlockWithRec
         R1=dPaiJustBlock
         RETF

DealCoordBlank:
         R1=[_BlankFlag]
         [_SoundMode]=R1
         R1=[_BlankSoundIndex]
         [_Index]=R1
         R1=[_SysFlagA]
         R1|=ReadyPlayBit
         [_SysFlagA]=R1
         DATAOUT
         R1=dPaiBlank
         RETF

InitPaiDown:
         R1=0
         [_TimeCtrCount]=R1
         [_AutoOffTime]=R1
         [_IntFileIndex]=R1
         [_RecordFlag]=R1
         [_PlayTotalTime]=R1
         R1=[_SeriousFlag]
         R1&=ExplainBit_
         [_SeriousFlag]=R1
         R1=0xffff
         [_PrevDealBlock]=R1
         R1=[_SysFlagA]
         R1&=PaiDealMask_
         R1|=PaiStatuBit
         [_SysFlagA]=R1
         R1=[_Statu]
         R1&=DynamicBit
         R1&=StatuMask
         R1|=DTNormalPlayBit
         [_Statu]=R1
SoundAllStop:
         R1=0
         [_DealIndex]=R1
         [_RegistIndex]=R1
         [_MaxRegLevel]=R1
         [_MaxDealLevel]=R1
         [_CurrentRegLevel]=R1
SoundStop:
         CALL _SacmStop
         R1=0
         [_InPlayBlock]=R1
         [_PrevDelayTime]=R1
         [_InsMode]=R1
         R1=[_SysFlagA]
         R1&=ReadyPlayBit_&PlayIndexBit_
         [_SysFlagA]=R1
         RETF

TestDiCoord:
         R1=[_SysFlagA]
         R2=[_SeriousFlag]
         TEST R2, SeriousSelectionBit
         JE TestDiCoord1
         R2=[_QuestionFlag]
         TEST R2,QuestionDiCoordBit
         JE TestDiCoord1
TestDiCoord_:
         R1&=PaiStatuBit_
         [_SysFlagA]=R1
         R1=1
         RETF
TestDiCoord1:
         R2=[_EditFlag]
         TEST R2, InEditBit
         JE TestDiCoord2
         TEST R2, AutoEditBit
         JNE TestDiCoord_
TestDiCoord2:
         R1=0
         RETF


GetNorBlock:         
         [_NandAddrL]=R3
         [_NandAddrH]=R4
GetNorBlock_:         
         CALL SetSearchingAddr
         R5=R3|0xfe00
         JMP GetNorBlock1
GetNorBlock0:
         R5+=1
         JCC GetNorBlock1
         CALL ChgSearchingAddr
GetNorBlock1:
         RBYTE_        
         JNE GetNorBlock2
         PC=DealCoordBlank
GetNorBlock2:
         CMP R1,[_XValue]
         JA GetNorBlockSkip1
         R5+=1
         JCC GetNorBlock3
         CALL ChgSearchingAddr        
GetNorBlock3:
         RBYTE_
         CMP R1,[_XValue]
         JB GetNorBlockSkip2
         R5+=1
         JCC GetNorBlock4
         CALL ChgSearchingAddr       
GetNorBlock4:
         RBYTE_
         CMP R1,[_YValue]
         JA GetNorBlockSkip3
         R5+=1
         JCC GetNorBlock5
         CALL ChgSearchingAddr       
GetNorBlock5:
         RBYTE_
         CMP R1,[_YValue]
         JB GetNorBlockSkip4
         PC=GetNorBlockOk         
GetNorBlockSkip1:
         R5+=1
         JCC GetNorBlockSkip1_
         CALL ChgSearchingAddr    
GetNorBlockSkip1_:
         RBYTE2
GetNorBlockSkip2:
         R5+=1
         JCC GetNorBlockSkip2_
         CALL ChgSearchingAddr  
GetNorBlockSkip2_:
         RBYTE2
GetNorBlockSkip3:
         R5+=1
         JCC GetNorBlockSkip3_
         CALL ChgSearchingAddr        
GetNorBlockSkip3_:
         RBYTE2
GetNorBlockSkip4:
         R5+=1
         JCC GetNorBlockSkip4_
         CALL ChgSearchingAddr      
GetNorBlockSkip4_:
         RBYTE2
GetNorBlockSkip5:
         R5+=1
         JCC GetNorBlockSkip5_
         CALL ChgSearchingAddr      
GetNorBlockSkip5_:
         RBYTE2
         PC=GetNorBlock0      

         
GetNorBlockOk:
         R5+=1
         JCC GetNorBlockOkSkip1
         CALL ChgSearchingAddr       
GetNorBlockOkSkip1:
         RBYTE_
         [_Tmp1]=R1
         JE GetNorBlockOkSkip1_ 
         PC=GetNorBlockRegisterData1
GetNorBlockOkSkip1_:         
         R5+=1
         JCC GetNorBlockOkSkip2
         CALL ChgSearchingAddr       
GetNorBlockOkSkip2:
         RBYTE_
         JE GetNorBlockOkSkip2__
         PC=GetNorBlockRegisterData2
GetNorBlockOkSkip2__:         
         R5+=1
         JCC GetNorBlockOkSkip2_
         CALL ChgSearchingAddr   
GetNorBlockOkSkip2_:         
         RBYTE2
         R5+=1
         JCC GetNorBlockOkSkip3
         CALL ChgSearchingAddr       
GetNorBlockOkSkip3:
         RBYTE2
         R5+=1
         JCC GetNorBlockOkSkip4
         CALL ChgSearchingAddr       
GetNorBlockOkSkip4:
         RBYTE2
         R5+=1
         JCC GetNorBlockOkSkip5
         CALL ChgSearchingAddr       
GetNorBlockOkSkip5:
         RBYTE2
         PC=GetNorBlockOk
GetNorBlockRegisterData1:
         R5+=1
         JCC GetNorBlockRegisterData1_
         CALL ChgSearchingAddr 
GetNorBlockRegisterData1_:
         RBYTE_
GetNorBlockRegisterData2:   
         R1=R1 LSL 4
         R4=R1 LSL 4
         R4|=[_Tmp1]
         DATAOUT
         R1=R4 
         R1-=1
         RETF
         
GetBlockBlank:
         DATAOUT
         R1=0
         RETF

⌨️ 快捷键说明

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