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

📄 index.asm

📁 完整的方案
💻 ASM
📖 第 1 页 / 共 3 页
字号:

         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 + -