📄 index.asm
字号:
R1=[FileSeriousL]
CALL StoreNearLinkBlock
R1=[FileSeriousH]
CALL StoreNearLinkBlock
FSNearLinkEnd:
PC=GetPlayIndex0
/////////////// 0x94 ////////////////////
FSErrLink:
R1=[_SeriousFlag]
TEST R1,SeriousInLinkBit
JNE FSErrLink_
PC=GetPlayIndex0
FSErrLink_:
R1=[_BlockFlag]
R1|=BlockInLinkBit
R1|=BlockErrLinkBit
R1|=BlockEndLinkBit
[_BlockFlag]=R1
PC=GetPlayIndex0
/////////////// 0x95 ////////////////////
FSCauseAndEffect:
R1=[FileSeriousL]
R3=[_BlockFlag]
R2 = R1&0x07
R1=[FileSeriousH]
R2+=FSCauseAndEffectTab
PC=[R2]
/////////////// 0x96 ////////////////////
FSConditionEngine:
R1=[_BlockFlag]
R1|=ConditionBit
[_BlockFlag]=R1
R3=0
R1=[_Condition1Serious]
JE FSConditionEngine2
R3+=1
FSConditionEngine2:
R1=[_Condition2Serious]
JE FSConditionEngine3
R3+=2
FSConditionEngine3:
R1=[_Condition3Serious]
JE FSConditionEngineScan
R3+=4
FSConditionEngineScan:
R3+=FSConditionTab
R1=[FileSeriousL]
R2=[FileSeriousH]
PC=[R3]
/////////////// 0x97 ////////////////////
FSConditionChg:
R1=[_BlockFlag]
R1|=ConditionBit
[_BlockFlag]=R1
R1=[FileSeriousL]
FSConditionChg1:
TEST R1, Bit0
JE FSConditionChg2
R2=[_Condition1Bak]
JE FSConditionChg2
[_Condition1Serious]=R2
FSConditionChg2:
TEST R1, Bit1
JE FSConditionChg3
R2=[_Condition2Bak]
JE FSConditionChg3
[_Condition2Serious]=R2
FSConditionChg3:
TEST R1, Bit2
JE FSConditionChgEnd
R2=[_Condition3Bak]
JE FSConditionChgEnd
FSConditionChg3_:
[_Condition3Serious]=R2
FSConditionChgEnd:
PC=GetPlayIndex0
/////////////// 0xbf ////////////////////
FSCanselAllFunction:
CALL CanselSpcFunction
PC=GetPlayIndex0
/////////////// 0xc0 ////////////////////
FSSoundStruct:
R1=[FileSeriousL]
CMP R1, 0x11
JA FSSoundCAEStructDi
R1+=FSSoundStructTab
PC=[R1]
/////////////// 0xc1 ////////////////////
FSSoundCAEStruct:
R1=[_BlockFlag]
TEST R1,CAEEffectBit
JE FSSoundCAEStructDi
FSSoundCAEStruct_:
R1=[FileSeriousL]
CMP R1,0
JE FSSoundCAEStructEn
CMP R1,[_DealCause]
JE FSSoundCAEStructEn
FSSoundCAEStructDi:
R1=0
[_FileOk]=R1
FSSoundCAEStructEn:
PC=GetPlayIndex0
/////////////// 0xc2 ////////////////////
FSSoundQSeriousStruct:
R1=[_SeriousFlag]
TEST R1,SeriousSelectionBit
JE FSSoundQSeriousStructDi
// JNE FSSoundQSeriousStruct_
// R1=[_BlockFlag]
// TEST R1, HaveSelectionQuestionBit
// JE FSSoundQSeriousStructDi
FSSoundQSeriousStruct_:
R1=[FileSeriousL]
JE FSSoundQSeriousStructEn
CMP R1, [_SelectionSerious]
JE FSSoundQSeriousStructEn
FSSoundQSeriousStructDi:
R1=0
[_FileOk]=R1
FSSoundQSeriousStructEn:
PC=GetPlayIndex0
/////////////// 0xc3 ////////////////////
FSSoundQAnswerStruct:
R1=[_BlockFlag]
TEST R1, HaveSelectionQuestionBit
JE FSSoundQAnswerStructDi
R1=[_BlockFlag]
TEST R1,AnswerRelevantBit
JE FSSoundQAnswerStructDi
TEST R1,AnswerCorrectBit
JE FSSoundQAnswerStructDi
R1=[FileSeriousL]
JE FSSoundQAnswerStruct_
R2=[_SelectionBitAnswer]
CALL GetBitNum
CMP R1, [FileSeriousL]
JNE FSSoundQAnswerStructDi
FSSoundQAnswerStruct_:
R1=[FileSeriousH]
JE FSSoundQAnswerStructEn
CMP R1,[_SelectionSerious]
JE FSSoundQAnswerStructEn
FSSoundQAnswerStructDi:
R1=0
[_FileOk]=R1
FSSoundQAnswerStructEn:
PC=GetPlayIndex0
///////////// 0xc4 & 0xc5 //////////////////
FSSoundConditionStruct:
R5+=1
JCC FSSoundConditionStructRead2
CALL ChgSearchingAddr
FSSoundConditionStructRead2:
RBYTE_
[IndexTmp]=R1
R5+=1
JCC FSSoundConditionStructRead3
CALL ChgSearchingAddr
FSSoundConditionStructRead3:
RBYTE_
[Condition2]=R1
R5+=1
JCC FSSoundConditionStructRead4
CALL ChgSearchingAddr
FSSoundConditionStructRead4:
RBYTE_
[Condition3]=R1
R1=[IndexTmp]
CMP R1, 0xc5
JE FSSoundConditionStruct_
PC=GetPlayIndexIn
FSSoundConditionStruct_:
R3=[_FileIndex]
R3+=1
[_FileIndex]=R3
R1=[Condition0]
JNE FSSoundConditionStruct2
FSSoundConditionStruct1: // =0, in order
R1=[Condition1]
JE FSSoundConditionStruct12
R2=[_Condition1Serious]
JE FSSoundConditionStructDi
CMP R1, R2
JNE FSSoundConditionStructDi
FSSoundConditionStruct12:
R1=[Condition2]
JE FSSoundConditionStruct13
R2=[_Condition2Serious]
JE FSSoundConditionStructDi
CMP R1, R2
JNE FSSoundConditionStructDi
FSSoundConditionStruct13:
R1=[Condition3]
JE FSSoundConditionStructEn
R2=[_Condition3Serious]
JE FSSoundConditionStructDi
CMP R1, R2
JE FSSoundConditionStructEn
FSSoundConditionStructDi:
R1=0
[_FileOk]=R1
FSSoundConditionStructEn:
PC=GetPlayIndex0
FSSoundConditionStruct2: // !=0, no order
R1=[Condition1]
JE FSSoundConditionStruct22
CMP R1,[_Condition1Serious]
JE FSSoundConditionStruct22
CMP R1,[_Condition2Serious]
JE FSSoundConditionStruct22
CMP R1,[_Condition3Serious]
JNE FSSoundConditionStructDi
FSSoundConditionStruct22:
R1=[Condition2]
JE FSSoundConditionStruct23
CMP R1,[_Condition1Serious]
JE FSSoundConditionStruct23
CMP R1,[_Condition2Serious]
JE FSSoundConditionStruct23
CMP R1,[_Condition3Serious]
JNE FSSoundConditionStructDi
FSSoundConditionStruct23:
R1=[Condition2]
JE FSSoundConditionStructEn
CMP R1,[_Condition1Serious]
JE FSSoundConditionStructEn
CMP R1,[_Condition2Serious]
JE FSSoundConditionStructEn
CMP R1,[_Condition3Serious]
JE FSSoundConditionStructEn
JMP FSSoundConditionStructDi
/////////////// 0xc6 ////////////////////
FSSoundConditionExitStruct:
R3=0
R1=[_Condition1Serious]
JE FSSoundConditionExitStruct2
R3+=1
FSSoundConditionExitStruct2:
R1=[_Condition2Serious]
JE FSSoundConditionExitStruct3
R3+=1
FSSoundConditionExitStruct3:
R1=[_Condition3Serious]
JE FSSoundConditionExitStruct_
R3+=1
FSSoundConditionExitStruct_:
R1=[FileSeriousL]
JE FSSoundConditionExitStructEn
CMP R1, R3
JE FSSoundConditionExitStructEn
FSSoundConditionExitStructDi:
R1=0
[_FileOk]=R1
FSSoundConditionExitStructEn:
PC=GetPlayIndex0
/////////////// 0xc7 ////////////////////
FSSoundBookStruct:
R1=[FileSeriousL]
JE FSSoundBookStructEn
CMP R1, [_Book]
JE FSSoundBookStructEn
CMP R1, 0xff
JNE FSSoundBookStructDi
R1=[FileSeriousH]
CALL ConditionDetect
CMP R1, 0
JNE FSSoundBookStructEn
FSSoundBookStructDi:
R1=0
[_FileOk]=R1
FSSoundBookStructEn:
PC=GetPlayIndex0
/////////////// 0xc8 ////////////////////
FSSoundPageStruct:
R1=[FileSeriousL]
JE FSSoundPageStructEn
CMP R1, [_Page]
JE FSSoundPageStructEn
FSSoundPageStructDi:
R1=0
[_FileOk]=R1
FSSoundPageStructEn:
PC=GetPlayIndex0
/////////////// 0xc9 ////////////////////
FSSoundModeStruct:
R1=[FileSerious]
JE FSSoundModeStructEn
R2=[_PlayMode]
R2+=D_BitTab_1
R3=[R2]
R3&=R1
JE FSSoundModeStructEn
FSSoundModeStructDi:
R1=0
[_FileOk]=R1
FSSoundModeStructEn:
PC=GetPlayIndex0
/////////////// 0xca ////////////////////
FSSoundQAnswerStruct2:
R1=[_BlockFlag]
TEST R1, HaveSelectionQuestionBit
JE FSSoundQAnswerStruct2Di
R1=[_BlockFlag]
TEST R1,AnswerRelevantBit
JE FSSoundQAnswerStruct2Di
TEST R1,AnswerCorrectBit
JE FSSoundQAnswerStruct2Di
R2=[_SelectionBitAnswer]
CALL GetBitNum
R2=[_SelectionNumber]
R2-=R1
CMP R2, [FileSeriousL]
JNE FSSoundQAnswerStruct2Di
R1=[FileSeriousH]
JE FSSoundQAnswerStruct2En
CMP R1,[_SelectionSerious]
JE FSSoundQAnswerStruct2En
FSSoundQAnswerStruct2Di:
R1=0
[_FileOk]=R1
FSSoundQAnswerStruct2En:
PC=GetPlayIndex0
/////////////// 0xcb ////////////////////
FSScoreSound:
R2=[_BlockFlag2]
TEST R2, ScoreBlockBit
JE FSScoreSoundDi
R1=[FileSerious]
TEST R1, BitF
JNE FSScoreSound1
TEST R2, ScoreRetBit
JE FSScoreSoundDi
FSScoreSound1:
R3=R1&0x7ff
TEST R1, BitE
JE FSScoreSound2
CMP R3, [_CurrentScore]
JB FSScoreSoundEn
FSScoreSound2:
TEST R1, BitD
JE FSScoreSound3
CMP R3, [_CurrentScore]
JZ FSScoreSoundEn
FSScoreSound3:
TEST R1, BitC
JE FSScoreSoundDi
CMP R3, [_CurrentScore]
JA FSScoreSoundEn
FSScoreSoundDi:
R1=0
[_FileOk]=R1
FSScoreSoundEn:
PC=GetPlayIndex0
/////////////// 0xcc ////////////////////
FSContinueSound:
// R2=[_ContinuePlayNum]
// CMP R3,C_ContinuePlayBufSize
// JE FSContinueSoundEnd
// R2+=_ContinuePlayBuf
// R1=[FileSerious]
// [R2]=R1
// R2=0
// CALL RegistRecMess
// R2=[_ContinuePlayNum]
// R2+=1
// [_ContinuePlayNum]=R2
//FSContinueSoundEnd:
PC=GetPlayIndex0
/////////////// 0xf8 ////////////////////
FSChangeEngine:
R2=[_PageModeAttrib]
R1=[FileSerious]
FSChangePageEngine:
TEST R1, Bit0
JNE FSChangeEnginePageEn
FSChangeEnginePageDi:
R2|=ChangePageDiBit
JMP FSChangeBookEngine
FSChangeEnginePageEn:
R2&=ChangePageDiBit_
FSChangeBookEngine:
TEST R1, Bit1
JNE FSChangeEngineBookEn
FSChangeEngineBookDi:
R2|=ChangeBookDiBit
JMP FSChangeEngineEnd
FSChangeEngineBookEn:
R2&=ChangeBookDiBit_
FSChangeEngineEnd:
PC=GetPlayIndex0
/////////////// 0xf9 ////////////////////
FSRecord:
R1=[_RecordFlag]
R1|=RecordBlockBit
R1|=InRecModeBit
R1|=ToRecordBit
R1&=InPlayBit_
[_RecordFlag]=R1
R2=[_SysFlagA]
R1=[FileSeriousL]
JNE FSRecordDouble
FSRecordNormal:
JMP FSRecordEnd
FSRecordDouble:
FSRecordEnd:
[_SysFlagA]=R2
PC=GetPlayIndex0
/////////////// 0xfa ////////////////////
FSRecordPlay:
R1=[_RecordFlag]
R1|=RecordBlockBit
[_RecordFlag]=R1
TEST R1,InRecModeBit
JE FSRecordPlayCut
// TEST R1, InPlayBit
// JE FSRecordPlaySound
TEST R1, InPlayRecBit
JE FSRecordPlayReccord
FSRecordPlaySound:
R1|=ToPlaySoundBit
R1&=ToPlayRecordBit_
[_RecordFlag]=R1
R1=[_RecordOrgFileNum]
[_PlayFileNum]=R1
JMP FSSourceSoundEnd
FSRecordPlayReccord:
R1|=ToPlayRecordBit
R1&=ToPlaySoundBit_
[_RecordFlag]=R1
JMP FSSourceSoundEnd
FSRecordPlayCut:
R1=0
[_RecordFileNum]=R1
[_RecordOrgFileNum]=R1
FSSourceSoundEnd:
PC=GetPlayIndex0
/////////////// 0xfb /////////////////////
// background level
/////////////// 0xfc ////////////////////
FSLink2Bank:
R1=[FileSeriousL]
[_LinkBank]=R1
PC=GetPlayIndex0
/////////////// 0xfd ////////////////////
FSLink2Addr:
R4=[_LinkBank]
FSLink2Addr_:
R3=[FileSerious]
CALL AddrChg
CALL AddBookAddr
JMP FSLinkAddrDo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -