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