123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143 |
- ;
- ; *** HERO ACTION CHANGE ***
- ;
- XDEF MOVE_CHANGE,CTRL_CHANGE
- XDEF SPECIAL_CHECK
- XDEF ATTACK_OFF,ATTACK_OFF_LM
- XDEF TO_JUMP
- XDEF JUMP_SET0,JUMP_SET1,JUMP_SET2,JUMP_SET3,JUMP_SET4
- XDEF JUMP_OFF
- XDEF ATTACK_A_CHG,ATTACK_B_CHG
- XDEF ATTACK_SET
- XDEF ATTACK_SETA
- XDEF ATTACK_SETB
- XDEF ATTACK_SET_HAOH
- XDEF ATTACK_SET_RIKI
- XDEF ATTACK_SET_RIKI2,RUN_SPA_SET
- XDEF RET100,RET100_OFF,HIT_LOCK_OFF
- XREF ?A5
- ;by HERO
- XREF Z_MINIMUM,DIR_CHANGE
- ;by ATTACK
- XREF ATTACK_DATA
- ;by HERO_SET
- XREF SET_TABLE
- ;by HERO_PM
- XREF SPIRIT_RANK
- SECT HERO,,C
- INCLUDE GAME_SYM.INC
- INCLUDE MACRO.INC
- INCLUDE NEO_GEO.INC
- INCLUDE LABEL.INC
- INCLUDE HFLAG.INC
- INCLUDE HERO_STP.INC
- INCLUDE ACT_GRP.INC
- INCLUDE CTRL_No.INC
- RET100:
- MOVEP.W MASTER_No(A6),D0
- CLR.B D0
- LEA.L -LOG(A5,D0.W),A4
- MOVE.W (A0)+,RET100_No(A4)
- RTS
- RET100_OFF:
- MOVEP.W MASTER_No(A6),D0
- CLR.B D0
- LEA.L -LOG(A5,D0.W),A4
- MOVE.B #0,DAMAGE_LOCK(A4)
- MOVE.B #0,DAMAGE_ACT_TYPE(A4)
- MOVE.W #6FH*2,D0 100RETU_STOP
- JSR.S SET_SOUND
- MOVE.W #52H*2,D0 ST_PUNCH
- JSR.S SET_SOUND
- RTS
- HIT_LOCK_OFF:
- MOVEP.W MASTER_No(A6),D0
- CLR.B D0
- LEA.L -LOG(A5,D0.W),A4
- MOVE.B #0,DAMAGE_LOCK(A4)
- RTS
- HK3_DIRECT_CHECK:
- TST.B CTRL_FLAG(A6)
- BNE.S HK3DC_1
- RTS
- HK3DC_1:
- MOVE.W DIRECT_CTRL(A6),D4
- DIRECT_SET:
- ADDQ.W #4,SP
- CTRL_CHANGE:
- ; in) D4 = CTRL_No
- AND.W #7FH,D4
- MOVE.W D4,REG_D4(A5)
- MOVE.W HERO_TYPE(A6),D1
- ADD.W D1,D1
- ADD.W D1,D1
- LEA.L SET_TABLE(PC),A2
- MOVE.L 40(A2,D1.W),A0
- MOVEQ.L #0,D0
- MOVE.B 0(A0,D4.W),D0
- BPL.S CTRL_CHANGE_1
- MOVEQ.L #0,D0
- RTS
- CTRL_CHANGE_1:
- MOVE.L 0(A2,D1.W),A1
- ADD.W D0,D0
- ADD.W D0,D0
- MOVE.W D0,REG_D0(A5)
- ADD.W D0,D0
- LEA.L 0(A1,D0.W),A1
- LEA.L 4(A1),A0
- MOVE.L (A1),A1
- JMP (A1)
- RUN_SPA_SET:
- CMP.B #96,HERO_SPIRIT(A6)
- BLO RS_NON
- MOVE.W HERO_LIFE(A6),D0
- CMP.W #32,D0
- BHI RS_NON
- ; MOVE.L ANOTHER_PLAYER(A6),A1
- ; CMP.W #64,HERO_LIFE(A1)
- ; BLO RS_NON
- JMP ATTACK_SET(PC)
- RS_NON:
- MOVEQ.L #0,D0
- RTS
- ATTACK_SET_RIKI:
- LEA.L SPIRIT_RANK(PC),A1
- MOVE.B HERO_SPIRIT(A6),D0
- CMP.B 1(A1),D0
- BCC ATTACK_SET
- ADDQ.W #4,REG_D0(A5)
- LEA.L 8(A0),A0
- CMP.B (A1),D0
- BCC ATTACK_SET
- ADDQ.W #4,REG_D0(A5)
- LEA.L 8(A0),A0
- BRA ATTACK_SET
- ATTACK_SET_RIKI2:
- LEA.L SPIRIT_RANK(PC),A1
- MOVE.B HERO_SPIRIT(A6),D0
- CMP.B 1(A1),D0
- BCC ATTACK_SET
- ADDQ.W #8,REG_D0(A5)
- LEA.L 16(A0),A0
- CMP.B (A1),D0
- BCC ATTACK_SET
- ADDQ.W #8,REG_D0(A5)
- LEA.L 16(A0),A0
- BRA ATTACK_SET
- ATTACK_SET_HAOH:
- TST.B IN_BONUS(A5)
- BNE ATTACK_SET
- BTST.B #4,PHASE+1(A5)
- BNE.S ASH_1
- BTST.B #BPS_COM_FLAG,PLAYER_STATE+PLAYER_OFFSET(A6)
- BEQ ASH_1
- TST.W HAOH_USE(A5)
- BEQ ASH_NON
- ASH_1:
- MOVE.W HERO_TYPE(A6),D0
- ADD.W D0,D0
- ADD.W D0,D0
- LEA.L ATTACK_DATA(PC),A1
- MOVE.L 0(A1,D0.W),A1
- MOVE.W REG_D0(A5),D1
- ADD.W D1,D1
- ADD.W D1,D1
- MOVE.B 5(A1,D1.W),D0
- CMP.B HERO_SPIRIT(A6),D0
- BLS.S ATTACK_SET
- ASH_NON:
- MOVE.W #40H,D4
- JMP CTRL_CHANGE(PC)
- ATTACK_SETB:
- ; MOVE.B #1,BEFOR_ATTACK(A6)
- BSET.B #BHS_KICK,HERO_STATE(A6)
- BRA.S ATTACK_SET
- ATTACK_SETA:
- ; MOVE.B #0,BEFOR_ATTACK(A6)
- BSET.B #BHS_PUNCH,HERO_STATE(A6)
- ATTACK_SET:
- MOVE.B #1,REV_TRIG_OFF(A6)
- MOVE.W REG_D4(A5),ACT_CTRL(A6)
- MOVE.W (A0),HERO_ACT_No(A6)
- CMP.W #04000H,(A0)
- BCS.S ATTACK_SET_1
- MOVE.L 4(A0),ADRS1(A4)
- MOVE.L 8(A0),CML_STACK(A4)
- ATTACK_SET_1:
- MOVE.B 3(A0),COUNTER_LEVEL(A6)
- MOVE.B #1,MASTER_REQUEST(A4)
- CLR.B CTRL_FLAG(A6)
- JSR ATTACK_LEVEL_SET(PC)
- JSR DAMAGE_STEP_OFF(PC)
- BSET.B #BHF_NO_DIR_CHG,FLAG(A6)
- MOVE.B #ATTACK_STEP,STEP1(A6)
- MOVEQ.L #1,D0
- RTS
- ATTACK_LEVEL_SET:
- MOVE.W HERO_TYPE(A6),D0
- CMP.W #9,D0
- BNE.S ALS_0000
- BTST.B #4,PHASE+1(A5)
- BEQ.S ALS_0000
- MOVEQ.L #0,D0
- ALS_0000:
- ADD.W D0,D0
- ADD.W D0,D0
- LEA.L ATTACK_DATA(PC),A0
- MOVE.L 0(A0,D0.W),A0
- MOVE.W REG_D0(A5),D1
- ADD.W D1,D1
- ADD.W D1,D1
- LEA.L 0(A0,D1.W),A0
- MOVE.B 3(A0),GARD_LEVEL(A6)
- BTST.B #4,PHASE+1(A5)
- BNE.S ALS_0101
- MOVE.B 4(A0),GARD_LEVEL(A6)
- ALS_0101:
- MOVE.B 5(A0),NEED_SPIRIT(A6)
- MOVE.B 6(A0),HIT_STOP(A6)
- MOVE.B 7(A0),HIT_LR(A6)
- MOVE.B 8(A0),DAMAGE_ACT_TYPE(A6)
- MOVE.B 9(A0),DAMAGE_LOCK(A6)
- MOVE.L 12(A0),HIT_SCORE(A6)
- BSR ATTACK_LEVEL_SUB
- MOVE.B D2,ATTACK_LEVEL(A6)
- BSR SPIRIT_DOWN
- RTS
- XDEF ATTACK_LEVEL_SUB
- ATTACK_LEVEL_SUB:
- MOVEQ.L #0,D2
- MOVE.B 1(A0),D2
- BTST.B #4,PHASE+1(A5)
- BNE.S ALS_0
- MOVE.B 0(A0),D2
- ALS_0:
- ; LEA.L SPIRIT_RANK(PC),A1
- ; MOVE.B HERO_SPIRIT(A6),D0
- ; CMP.B 1(A1),D0
- ; BCC.S ALS_01
- ; MOVE.B 2(A0),D2
- ; CMP.B (A1),D0
- ; BCC.S ALS_01
- ; MOVE.B 3(A0),D2
- ALS_01:
- BTST.B #BPS_COM_FLAG,PLAYER_STATE+PLAYER_OFFSET(A6)
- BNE.S ALS_1
- MULU ATTACK_MUL(A5),D2
- LSR.W #8,D2
- ALS_1:
- RTS
- SPIRIT_DOWN:
- MOVE.B HERO_SPIRIT(A6),SPIRIT_OLD(A6)
- MOVEQ.L #0,D0
- MOVE.B NEED_SPIRIT(A6),D0
- SUB.B D0,HERO_SPIRIT(A6)
- BHI.S SPIRIT_DOWN_1
- MOVE.B #1,HERO_SPIRIT(A6)
- SPIRIT_DOWN_1:
- RTS
- MOVE_CHANGE:
- ; hero move or action change by lever and button
- ; out) EQ = no change
- ; NE = change
- MOVE.B HERO_STATE(A6),D0
- AND.B #HS_PUNCH+HS_KICK+HS_SPECIAL+HS_AUTO,D0
- BNE.S MOVE_CHANGE_1
- BSR HK3_DIRECT_CHECK
- BTST.B #B_C_BUTTON,PLAY_LEVER+1(A6)
- BEQ.S MC_111
- BSR BK_CHECK
- MC_111:
- BTST.B #B_C_BUTTON,PLAY_LEVER+2(A6)
- BEQ MOVE_CHANGE_00
- TST.B REV_TRIG_OFF(A6)
- BNE MOVE_CHANGE_00
- MOVE.B #ATTACK_TIME2-1,ATTACK_TIMER(A6)
- BCLR.B #B_C_BUTTON,PLAY_LEVER(A6)
- MOVE.B #A_BUTTON,D0
- TST.B BEFOR_ATTACK(A6)
- BEQ.S MOVE_CHANGE_001
- MOVE.B #B_BUTTON,D0
- MOVE_CHANGE_001:
- OR.B D0,PLAY_LEVER+1(A6)
- MOVE_CHANGE_00:
- MOVE.W PLAY_LEVER(A6),D0
- BTST.L #B_A_BUTTON,D0
- BNE ATTACK_A_CHG
- BTST.L #B_B_BUTTON,D0
- BNE ATTACK_B_CHG
- BTST.L #B_D_BUTTON,D0
- BNE TO_COM
- BTST.L #B_UP+8,D0
- BNE TO_JUMP
- BTST.L #B_DOWN+8,D0
- BNE TO_SIT
- MOVE_CHANGE_1:
- MOVEQ.L #0,D0
- RTS
- TO_COM:
- BTST.B #BHS_JUMP,HERO_STATE(A6)
- BNE MOVE_CHANGE_1
- MOVE.L ANOTHER_PLAYER(A6),A0
- SUB.B #32,HERO_SPIRIT(A0)
- BHI.S TO_COM_1
- MOVE.B #1,HERO_SPIRIT(A0)
- TO_COM_1:
- MOVE.W #CTRL_COM,D4
- JMP CTRL_CHANGE(PC)
- TO_JUMP:
- JSR DIR_CHANGE(PC)
- MOVE.W #CTRL_JUMP,D4
- JMP CTRL_CHANGE(PC)
- TO_SIT:
- MOVE.W #CTRL_TO_SIT,D4
- JMP CTRL_CHANGE(PC)
- ATTACK_A_CHG:
- MOVE.B #0,BEFOR_ATTACK(A6)
- JSR ATTACK_JUDGE(PC)
- JMP CTRL_CHANGE(PC)
- BK_CHECK:
- BTST.B #BHS_JUMP,HERO_STATE(A6)
- BEQ BK_CHECK_NON
- TST.W VZ(A6)
- BPL.S ABC_000
- CMP.W #64,Z_POSITION(A6)
- BGT.S ABC_000
- RTS
- ABC_000:
- ADDQ.L #4,SP
- MOVE.B AREA_POSITION(A6),D0
- BEQ.S ATTACK_B_CHG_11
- MOVE.B ACT_ATTR(A4),D1
- EOR.B D0,D1
- AND.B #1,D1
- BNE.S ATTACK_B_CHG_11
- MOVE.L VZ(A6),D0
- BPL.S ATTACK_B_CHG_1
- NEG.L D0
- ATTACK_B_CHG_1:
- CMP.L #Z_MINIMUM,D0
- BCS TO_JKICKT
- ATTACK_B_CHG_11:
- MOVEQ.L #39H,D4
- JMP CTRL_CHANGE(PC)
- TO_JKICKT:
- MOVEQ.L #3AH,D4
- JMP CTRL_CHANGE(PC)
- XDEF LOCK_JUDGE
- BK_CHECK_NON:
- LOCK_JUDGE:
- MOVE.L ANOTHER_PLAYER(A6),A0
- CMP.B #5,STEP2(A0)
- BEQ LOCK_JUDGE_10
- MOVE.B #11110000B,D0 not HS_DEFENCE
- MOVE.B #11010000B,D1
- AND.B HERO_STATE(A6),D0
- BNE LOCK_JUDGE_10
- AND.B HERO_STATE(A0),D1
- BNE LOCK_JUDGE_10
- MOVE.W Z_POSITION(A6),D0
- CMP.W Z_POSITION(A0),D0
- BNE LOCK_JUDGE_10
- CMP.W #SHORT_AREA/2,TEMP_DISTANCE2(A5)
- BCC LOCK_JUDGE_10
- ; CMP.B #RIKI_STEP,STEP1(A0)
- ; BEQ NAGECK
- ; CMP.B #COM_STEP,STEP1(A0)
- ; BEQ NAGECK
- ; CMP.B #FURA_STEP,STEP1(A0)
- ; BNE LOCK_JUDGE_10
- NAGECK:
- BSR NAGE_EI_JUDGE
- BEQ LOCK_JUDGE_10
- CMP.W #0A0H,X_POSITION(A6)
- BCC NA_CK_1
- BTST.B #ACTAT_FLIP,ACT_ATTR(A4)
- BNE NA_CK_4
- BEQ NA_CK_3
- NA_CK_1:
- CMP.W #260H,X_POSITION(A6)
- BCS.S NA_CK_4
- BTST.B #ACTAT_FLIP,ACT_ATTR(A4)
- BEQ NA_CK_4
- NA_CK_3:
- BCHG.B #ACTAT_FLIP,ACT_ATTR(A4)
- MOVEP.W WORK_N0(A0),D0
- CLR.B D0
- BCHG.B #ACTAT_FLIP,ACT_ATTR(A5,D0.W)
- MOVE.L X_POSITION(A6),D1
- MOVE.L X_POSITION(A5,D0.W),X_POSITION(A6)
- MOVE.L D1,X_POSITION(A5,D0.W)
- NA_CK_4:
- BSET.B #BHSS_NAGERARE,STATE(A0)
- ADDQ.W #4,SP
- MOVE.W #2EH,D4
- JMP CTRL_CHANGE(PC)
- ; BSET.B #BHSS_LOCK_DEF,STATE(A0)
- ; BSET.B #BHSS_LOCK_OFF,STATE(A6)
- ; MOVE.B #LOCK_OFF_STEP,STEP1(A6)
- ; MOVE.B #60,LOCK_TIMER(A6)
- ; ADDQ.W #4,SP
- LOCK_JUDGE_10:
- RTS
- NAGE_EI_JUDGE:
- MOVE.W HERO_TYPE(A6),D0
- ADD.W D0,D0
- MOVE.W NAGE_BIT(PC,D0.W),D0
- MOVE.W HERO_TYPE(A0),D1
- BTST.L D1,D0
- RTS
- NAGE_BIT:
- ; FEDCBA9876543210
- DC.W 0000001111111111B H1
- DC.W 0000001111111111B H2
- DC.W 0000000000000000B E1
- DC.W 0000001111111111B E2
- DC.W 0000000000000000B E3
- DC.W 0000000000000000B E4
- DC.W 0000000000000000B E5
- DC.W 0000000000000000B E6
- DC.W 0000000000000000B E7
- DC.W 0000001111111111B E8
- ATTACK_B_CHG:
- MOVE.B #1,BEFOR_ATTACK(A6)
- JSR ATTACK_JUDGE(PC)
- ADD.W #10H,D4
- JMP CTRL_CHANGE(PC)
- ATTACK_JUDGE:
- SHORT_AREA EQU 16
- BTST.B #BHS_JUMP,HERO_STATE(A6)
- BNE AJ_JUMP
- MOVEQ.L #27H,D4
- BTST.B #BHS_DOWN,HERO_STATE(A6)
- BNE AJ_10
- BTST.B #B_C_BUTTON,PLAY_LEVER(A6)
- BNE AJ_LOW
- MOVEQ.L #20H,D4
- CMP.W #SHORT_AREA+16,TEMP_DISTANCE2(A5)
- BCC.S AJ_1
- MOVEQ.L #22H,D4
- AJ_1:
- MOVE.B ATTACK_TIMER(A6),D0
- BEQ AJ_2
- CMP.B #ATTACK_TIME2,D0
- BCC.S AJ_2
- ADDQ.W #1,D4
- AJ_2:
- AJ_10:
- RTS
- AJ_LOW:
- MOVEQ.L #24H,D4
- CMP.W #SHORT_AREA,TEMP_DISTANCE2(A5)
- BCC.S AJ_LOW_1
- MOVEQ.L #25H,D4
- AJ_LOW_1:
- RTS
- AJ_JUMP:
- TST.W VZ(A6)
- BPL.S AJJ_000
- CMP.W #64,Z_POSITION(A6)
- BGT.S AJJ_000
- ADDQ.L #4,SP
- MOVEQ.L #0,D0
- RTS
- AJJ_000:
- MOVEQ.L #28H,D4
- RTS
- AJ_NON:
- ADDQ.W #4,SP
- MOVEQ.L #0,D0
- RTS
- JUMP_SET0:
- MOVEP.W MASTER_No(A6),D0
- CLR.B D0
- LEA.L -LOG(A5,D0.W),A4
- BSR LEVER_DIRECTION
- BSR JUMP_SUB
- BSR JUMP_ATTACK_OFF
- RTS
- JUMP_SET3:
- MOVEP.W MASTER_No(A6),D0
- CLR.B D0
- LEA.L -LOG(A5,D0.W),A4
- BSR CHARA_DIRECTION
- BTST.B #BPS_COM_FLAG,PLAYER_STATE+PLAYER_OFFSET(A4)
- BEQ.S JUMP_SET3_COM
- BTST.B #B_UP,PLAY_LEVER(A4)
- BNE.S JUMP_SET3_1
- JUMP_SET3_COM:
- LEA.L 10(A0),A0
- BSR JUMP_SUB
- CLR.B ACT_COUNT(A6)
- RTS
- JUMP_SET3_1:
- BSR JUMP_SUB
- LEA.L 10(A0),A0
- RTS
- JUMP_SET1:
- MOVEP.W MASTER_No(A6),D0
- CLR.B D0
- LEA.L -LOG(A5,D0.W),A4
- BSR CHARA_DIRECTION
- BSR JUMP_SUB
- RTS
- JUMP_SET4:
- MOVEP.W MASTER_No(A6),D0
- CLR.B D0
- LEA.L -LOG(A5,D0.W),A4
- BSR CHARA_DIRECTION
- MOVEQ.L #0,D3
- MOVE.W #-90H,D5
- MOVE.W (A0)+,REG_D0(A5)
- MOVE.W #0,REG_D0+2(A5)
- BSR JUMP_SUB_0
- RTS
- JUMP_SET2:
- MOVEP.W MASTER_No(A6),D0
- CLR.B D0
- LEA.L -LOG(A5,D0.W),A4
- BSR LEVER_DIRECTION
- TST.B D4
- BNE.S JUMP_SET2_1
- BSR CHARA_DIRECTION
- JUMP_SET2_1:
- BSR JUMP_SUB
- RTS
- LEVER_DIRECTION:
- MOVE.W #CTRL_FRONT_JUMP,D0
- MOVEQ.L #LEFT+RIGHT,D4
- AND.B PLAY_LEVER(A4),D4
- BEQ.S LV_DIR_2
- BTST.L #B_LEFT,D4
- BNE.S LV_DIR_3
- BTST.B #ACTAT_FLIP,ACT_ATTR(A6)
- BEQ.S LV_DIR_1
- MOVE.W #CTRL_BACK_JUMP,D0
- LV_DIR_1:
- CMP.W #CTRL_JUMP,ACT_CTRL(A4)
- BNE.S LV_DIR_2
- MOVE.W D0,ACT_CTRL(A4)
- LV_DIR_2:
- RTS
- LV_DIR_3:
- BTST.B #ACTAT_FLIP,ACT_ATTR(A6)
- BNE.S LV_DIR_4
- MOVE.W #CTRL_BACK_JUMP,D0
- LV_DIR_4:
- CMP.W #CTRL_JUMP,ACT_CTRL(A4)
- BNE.S LV_DIR_5
- MOVE.W D0,ACT_CTRL(A4)
- LV_DIR_5:
- RTS
- CHARA_DIRECTION:
- MOVEQ.L #RIGHT,D4
- BTST.B #ACTAT_FLIP,ACT_ATTR(A6)
- BEQ.S CHARA_DIRECTION_1
- MOVEQ.L #LEFT,D4
- CHARA_DIRECTION_1:
- RTS
- JUMP_ATTACK_OFF:
- BCLR.B #7,HIT_OFF(A4)
- AND.B #"(HS_KICK+HS_PUNCH+HS_SPECIAL),HERO_STATE(A4)
- CLR.B ATTACK_TIMER(A4)
- CLR.B ATTACK_LEVEL(A4)
- CLR.B SPECIAL_No(A4)
- RTS
- NOP
- JUMP_OFF:
- MOVEP.W MASTER_No(A6),D0
- CLR.B D0
- LEA.L -LOG(A5,D0.W),A4
- BCLR.B #BHS_JUMP,HERO_STATE(A4)
- CLR.L VZ(A4)
- CLR.L VZ(A6)
- CLR.L Z_POSITION(A4)
- RTS
- JUMP_SUB:
- MOVE.L (A0)+,D3
- MOVE.W (A0)+,D5
- MOVE.L (A0)+,REG_D0(A5)
- JUMP_SUB_0:
- MOVE.W PLAYER_No+PLAYER_OFFSET(A4),D0
- BCLR.B D0,BACK2+MOVE_DIR(A5)
- BCLR.B #BHS_DOWN,HERO_STATE(A4)
- BSET.B #BHF_NO_BJUDGE,FLAG(A4)
- BSET.B #BHF_NO_DIR_CHG,FLAG(A4)
- BSET.B #BHS_JUMP,HERO_STATE(A4)
- MOVE.L D3,VZ(A4)
- MOVE.W D5,AZ(A4) org -90H
- MOVEQ.L #0,D0
- MOVEQ.L #0,D1
- AND.B #LEFT+RIGHT,D4
- BEQ.S JUMP_SUB_1
- MOVE.W REG_D0(A5),D0
- MOVE.W REG_D0+2(A5),D1
- AND.B #RIGHT,D4
- BNE.S JUMP_SUB_1
- NEG.W D0
- NEG.W D1
- JUMP_SUB_1:
- MOVE.W D0,JUMP_VX(A4)
- MOVE.W D1,JUMP_AX(A4)
- RTS
- ATTACK_OFF_LM:
- LEA.L (A6),A0
- ATTACK_OFF:
- ; attack efffect off
- ; in) A0 HERO1 or 2
- BCLR.B #7,HIT_OFF(A0)
- AND.B #"(HS_KICK+HS_PUNCH+HS_SPECIAL),HERO_STATE(A0)
- BCLR.B #BHF_NO_DIR_CHG,FLAG(A0)
- CLR.B ATTACK_TIMER(A0)
- CLR.B ATTACK_LEVEL(A0)
- CLR.B SPECIAL_No(A0)
- RTS
- DAMAGE_STEP_OFF:
- AND.B #7EH,HIT_OFF(A6)
- RTS
- SPECIAL_CHECK:
- MOVE.B HERO_STATE(A6),D0
- AND.B #HS_PUNCH+HS_KICK+HS_JUMP+HS_DAMAGE+HS_AUTO,D0
- BEQ.S SPC_1
- CLR.B SPECIAL_LEVER(A6)
- RTS
- SPC_1:
- MOVE.B PLAY_LEVER(A6),D1
- BTST.B #ACTAT_FLIP,ACT_ATTR(A4)
- BEQ.S SPC_2
- MOVEQ.L #LEFT,D0
- MOVEQ.L #RIGHT,D2
- AND.B D1,D0
- AND.B D1,D2
- AND.B #"(LEFT+RIGHT),D1
- LSL.B #1,D0
- LSR.B #1,D2
- OR.B D0,D1
- OR.B D2,D1
- SPC_2:
- MOVE.W HERO_TYPE(A6),D5
- ADD.W D5,D5
- ADD.W D5,D5
- ADD.W D5,D5
- LEA.L SPC_LEV_TBL(PC),A1
- MOVE.L 4(A1,D5.W),A0
- MOVEQ.L #0,D4
- MOVE.B SPECIAL_LEVER(A6),D4
- BNE SPC_6
- MOVE.L 0(A1,D5.W),A0
- SPC_3:
- MOVE.B (A0),D0
- BEQ SPC_5
- CMP.B D0,D1
- BEQ.S SPC_4
- ADDQ.W #4,A0
- BRA.S SPC_3
- SPC_4:
- MOVE.B 1(A0),SPECIAL_LEVER(A6)
- MOVE.B 2(A0),SPECIAL_TIMER(A6)
- SPC_5:
- RTS
- SPC_6:
- SUBQ.B #1,SPECIAL_TIMER(A6)
- BLE.S SPC_8
- ADD.W D4,D4
- ADD.W D4,D4
- ADD.W D4,D4
- CMP.B -8(A0,D4.W),D1
- BEQ.S SPC_9
- MOVEQ.L #0,D0
- MOVE.B 1(A0,D4.W),D0
- CMP.B 0(A0,D4.W),D1
- BEQ.S SPC_7
- MOVE.B 3(A0,D4.W),D0
- BEQ.S SPC_10
- CMP.B 2(A0,D4.W),D1
- BEQ.S SPC_7
- MOVE.B 5(A0,D4.W),D0
- BEQ.S SPC_10
- CMP.B 4(A0,D4.W),D1
- BEQ.S SPC_7
- MOVE.B 7(A0,D4.W),D0
- BEQ.S SPC_10
- CMP.B 6(A0,D4.W),D1
- BNE.S SPC_10
- SPC_7:
- MOVE.B D0,SPECIAL_LEVER(A6)
- ADD.W D0,D0
- ADD.W D0,D0
- ADD.W D0,D0
- MOVE.B 1(A0,D0.W),D2
- BNE.S SPC_9
- MOVE.W 2(A0,D0.W),DIRECT_CTRL(A6)
- MOVE.B #0FFH,CTRL_FLAG(A6)
- MOVE.B SPECIAL_TIMER(A6),SPECIAL_OUT(A6)
- SPC_8:
- CLR.B SPECIAL_LEVER(A6)
- SPC_9:
- RTS
- SPC_10:
- ; SUBQ.B #1,SPECIAL_TIMER(A6)
- RTS
- XDEF SPC_LEV_TBL
- SPC_LEV_TBL:
- DC.L H1_SPC_FIRST
- DC.L H1_SPC_NEXT
- DC.L H1_SPC_FIRST
- DC.L H1_SPC_NEXT
- DC.L E1_SPC_FIRST 1
- DC.L E1_SPC_NEXT
- DC.L E2_SPC_FIRST 2
- DC.L E2_SPC_NEXT
- DC.L E3_SPC_FIRST 3
- DC.L E3_SPC_NEXT
- DC.L E4_SPC_FIRST 4
- DC.L E4_SPC_NEXT
- DC.L E5_SPC_FIRST 5
- DC.L E5_SPC_NEXT
- DC.L E6_SPC_FIRST 6
- DC.L E6_SPC_NEXT
- DC.L E7_SPC_FIRST 7
- DC.L E7_SPC_NEXT
- DC.L E8_SPC_FIRST 8
- DC.L E8_SPC_NEXT
- SPTL1 EQU 40
- SPTL2 EQU 28
- SPTL3 EQU 80
- SPTL4 EQU 30
- H1_SPC_FIRST:
- DC.B DOWN+LEFT,6,SPTL3,0
- DC.B DOWN,1,SPTL1,0
- DC.B RIGHT,12,SPTL3,0
- DC.B 0,0
- H1_SPC_NEXT:
- DC.B DOWN,0,0,0,0,0,0,0 0
- DC.B DOWN+RIGHT,2,DOWN+LEFT,6,0,0,0,0 1
- DC.B RIGHT,3,0,0,0,0,0,0 2
- DC.B RIGHT+A_BUTTON,4,A_BUTTON,4 3
- DC.B C_BUTTON,29,RIGHT+B_BUTTON,8 3
- DC.W 0,40H,0,0 4
- DC.B DOWN+LEFT,0,0,0,0,0,0,0 5
- DC.B RIGHT,7,DOWN,10,0,0,0,0 6
- DC.B RIGHT+B_BUTTON,8,B_BUTTON,8 7
- DC.B RIGHT+UP+B_BUTTON,8,0,0 7
- DC.W 0,41H,0,0 8
- DC.B DOWN,0,0,0,0,0,0,0 9
- DC.B DOWN+RIGHT,2,RIGHT,7,0,0,0,0 10
- DC.B RIGHT,0,0,0,0,0,0,0 11
- DC.B LEFT,13,DOWN,20,0,0,0,0 12
- DC.B LEFT+DOWN,14,RIGHT,26,0,0,0,0 13
- DC.B DOWN,15,0,0,0,0,0,0 14
- DC.B DOWN+RIGHT,16,0,0,0,0,0,0 15
- DC.B RIGHT,17,0,0,0,0,0,0 16
- DC.B RIGHT+A_BUTTON,18,A_BUTTON,18 17
- DC.B RIGHT+UP+A_BUTTON,18,0,0 17
- DC.W 0,43H,0,0 18
- DC.B DOWN,0,0,0,0,0,0,0 19
- DC.B RIGHT+DOWN,21,0,0,0,0,0,0 20
- DC.B RIGHT+DOWN+A_BUTTON,22,0,0,0,0,0,0 21
- DC.W 0,26H,0,0 22
- DC.B DOWN,0,0,0,0,0,0,0 23
- DC.B LEFT,25,0,0,0,0,0,0 24
- DC.B RIGHT,26,0,0,0,0,0,0 25
- DC.B RIGHT+C_BUTTON,27,C_BUTTON,27,0,0,0,0 26
- DC.W 0,42H,0,0 27
- DC.B C_BUTTON,0,0,0,0,0,0,0 28
- DC.B A_BUTTON+C_BUTTON,30,0,0,0,0,0,0 29
- DC.W 0,44H,0,0 30
- E1_SPC_FIRST:
- DC.B DOWN,1,SPTL1,0
- DC.B 0,0
- E1_SPC_NEXT:
- DC.B DOWN,0,0,0,0,0,0,0 0
- DC.B DOWN+RIGHT,2,0,0,0,0,0,0 1
- DC.B RIGHT,3,0,0,0,0,0,0 2
- DC.B RIGHT+A_BUTTON,4,A_BUTTON,4 3
- DC.B RIGHT+UP+A_BUTTON,4,0,0 3
- DC.W 0,40H,0,0 4
- E2_SPC_FIRST:
- DC.B DOWN+LEFT,7,SPTL1,0
- DC.B DOWN,1,SPTL1,0
- DC.B 0,0
- E2_SPC_NEXT:
- DC.B DOWN,0,0,0,0,0,0,0 0
- DC.B DOWN+RIGHT,2,DOWN+LEFT,6,0,0,0,0 1
- DC.B RIGHT,3,0,0,0,0,0,0 2
- DC.B RIGHT+A_BUTTON,4,A_BUTTON,4 3
- DC.B RIGHT+B_BUTTON,5,B_BUTTON,5 3
- DC.W 0,40H,0,0 4
- DC.W 0,42H,0,0 5
- DC.B DOWN+LEFT,0,0,0,0,0,0,0 6
- DC.B RIGHT,8,DOWN,11,0,0,0,0 7
- DC.B RIGHT+B_BUTTON,9,B_BUTTON,9 8
- DC.B RIGHT+UP+B_BUTTON,9,0,0 8
- DC.W 0,41H,0,0 9
- DC.B DOWN,0,0,0,0,0,0,0 10
- DC.B DOWN+RIGHT,2,RIGHT,8,0,0,0,0 11
- E3_SPC_FIRST:
- DC.B DOWN+LEFT,7,SPTL1,0
- DC.B DOWN,1,SPTL1,0
- DC.B RIGHT,13,SPTL3,0
- DC.B 0,0
- E3_SPC_NEXT:
- DC.B DOWN,0,0,0,0,0,0,0 0
- DC.B DOWN+RIGHT,2,DOWN+LEFT,6,0,0,0,0 1
- DC.B RIGHT,3,0,0,0,0,0,0 2
- DC.B RIGHT+A_BUTTON,4,A_BUTTON,4 3
- DC.B RIGHT+B_BUTTON,5,B_BUTTON,5 3
- DC.W 0,40H,0,0 4
- DC.W 0,41H,0,0 5
- DC.B DOWN+LEFT,0,0,0,0,0,0,0 6
- DC.B RIGHT,8,DOWN,11,0,0,0,0 7
- DC.B RIGHT+B_BUTTON,9,B_BUTTON,9 8
- DC.B RIGHT+UP+B_BUTTON,9,0,0 8
- DC.W 0,42H,0,0 9
- DC.B DOWN,0,0,0,0,0,0,0 10
- DC.B DOWN+RIGHT,2,RIGHT,8,0,0,0,0 11
- DC.B RIGHT,0,0,0,0,0,0,0 12
- DC.B LEFT,14,0,0,0,0,0,0 13
- DC.B DOWN,15,RIGHT,17,0,0,0,0 14
- DC.B LEFT,16,0,0,0,0,0,0 15
- DC.B RIGHT,17,0,0,0,0,0,0 16
- DC.B RIGHT+C_BUTTON,18,0,0,0,0,0,0 17
- DC.W 0,43H,0,0 18
- E4_SPC_FIRST:
- DC.B DOWN+LEFT,6,SPTL3,0
- DC.B DOWN,1,SPTL1,0
- DC.B 0,0
- E4_SPC_NEXT:
- DC.B DOWN,0,0,0,0,0,0,0 0
- DC.B DOWN+RIGHT,2,DOWN+LEFT,6,0,0,0,0 1
- DC.B RIGHT,3,0,0,0,0,0,0 2
- DC.B RIGHT+B_BUTTON,4,B_BUTTON,4 3
- DC.B RIGHT+UP+B_BUTTON,4,0,0 3
- DC.W 0,41H,0,0 4
- DC.B DOWN+LEFT,0,0,0,0,0,0,0 5
- DC.B RIGHT,7,DOWN,10,LEFT,12,0,0 6
- DC.B RIGHT+B_BUTTON,8,B_BUTTON,8 7
- DC.B RIGHT+UP+B_BUTTON,8,0,0 7
- DC.W 0,40H,0,0 8
- DC.B DOWN,0,0,0,0,0,0,0 9
- DC.B DOWN+RIGHT,2,RIGHT,7,LEFT+DOWN,6,0,0 10
- DC.B LEFT,0,0,0,0,0,0,0 11
- DC.B LEFT+B_BUTTON,13,B_BUTTON,13 12
- DC.B LEFT+UP+B_BUTTON,13,LEFT+DOWN,6 12
- DC.W 0,42H,0,0
- E5_SPC_FIRST:
- DC.B DOWN,1,SPTL1,0
- DC.B 0,0
- E5_SPC_NEXT:
- DC.B DOWN,0,0,0,0,0,0,0 0
- DC.B DOWN+RIGHT,2,0,0,0,0,0,0 1
- DC.B RIGHT,3,0,0,0,0,0,0 2
- DC.B RIGHT+A_BUTTON,4,A_BUTTON,4 3
- DC.B RIGHT+B_BUTTON,5,B_BUTTON,5 3
- DC.W 0,40H,0,0 4
- DC.W 0,41H,0,0 5
- E6_SPC_FIRST:
- DC.B DOWN+LEFT,6,SPTL3,0
- DC.B DOWN,1,SPTL1,0
- DC.B 0,0
- E6_SPC_NEXT:
- DC.B DOWN,0,0,0,0,0,0,0 0
- DC.B DOWN+RIGHT,2,DOWN+LEFT,6,0,0,0,0 1
- DC.B RIGHT,3,0,0,0,0,0,0 2
- DC.B RIGHT+A_BUTTON,4,A_BUTTON,4 3
- DC.B RIGHT+UP+A_BUTTON,4,0,0 3
- DC.W 0,40H,0,0 4
- DC.B DOWN+LEFT,0,0,0,0,0,0,0 5
- DC.B RIGHT,7,DOWN,10,LEFT,12,0,0 6
- DC.B RIGHT+A_BUTTON,8,A_BUTTON,8 7
- DC.B RIGHT+UP+A_BUTTON,8,0,0 7
- DC.W 0,41H,0,0 8
- DC.B DOWN,0,0,0,0,0,0,0 9
- DC.B DOWN+RIGHT,2,RIGHT,7,LEFT+DOWN,6,0,0 10
- DC.B LEFT,0,0,0,0,0,0,0 11
- DC.B LEFT+B_BUTTON,13,B_BUTTON,13 12
- DC.B LEFT+UP+B_BUTTON,13,LEFT+DOWN,6 12
- DC.W 0,42H,0,0
- E7_SPC_FIRST:
- DC.B DOWN,1,SPTL1,0,0,0,0,0
- DC.B 0,0
- E7_SPC_NEXT:
- DC.B DOWN,0,0,0,0,0,0,0 0
- DC.B DOWN+RIGHT,2,0,0,0,0,0,0 1
- DC.B RIGHT,3,0,0,0,0,0,0 2
- DC.B RIGHT+UP,4,RIGHT+A_BUTTON,7 3
- DC.B A_BUTTON,7,RIGHT+UP+A_BUTTON,7 3
- DC.B UP,5,0,0,0,0,0,0 4
- DC.B UP+A_BUTTON,6,A_BUTTON,6,0,0,0,0 5
- DC.W 0,40H,0,0 6
- DC.W 0,42H,0,0 7
- E8_SPC_FIRST:
- DC.B DOWN+LEFT,6,SPTL1,0
- DC.B DOWN,1,SPTL1,0
- DC.B RIGHT,12,SPTL3,0
- DC.B LEFT,29,SPTL3,0
- DC.B 0,0
- E8_SPC_NEXT:
- DC.B DOWN,0,0,0,0,0,0,0 0
- DC.B DOWN+RIGHT,2,DOWN+LEFT,6,0,0,0,0 1
- DC.B RIGHT,3,0,0,0,0,0,0 2
- DC.B RIGHT+A_BUTTON,4,A_BUTTON,4 3
- DC.B RIGHT+UP+A_BUTTON,4,RIGHT+B_BUTTON,8 3
- DC.W 0,40H,0,0 4
- DC.B DOWN+LEFT,0,0,0,0,0,0,0 5
- DC.B RIGHT,7,DOWN,10,0,0,0,0 6
- DC.B RIGHT+B_BUTTON,8,B_BUTTON,8 7
- DC.B RIGHT+UP+B_BUTTON,8,0,0 7
- DC.W 0,41H,0,0 8
- DC.B DOWN,0,0,0,0,0,0,0 9
- DC.B DOWN+RIGHT,2,RIGHT,7,0,0,0,0 10
- DC.B RIGHT,0,0,0,0,0,0,0 11
- DC.B LEFT,13,DOWN,20,0,0,0,0 12
- DC.B LEFT+DOWN,14,RIGHT,26,0,0,0,0 13
- DC.B DOWN,15,0,0,0,0,0,0 14
- DC.B DOWN+RIGHT,16,0,0,0,0,0,0 15
- DC.B RIGHT,17,0,0,0,0,0,0 16
- DC.B RIGHT+A_BUTTON,18,A_BUTTON,18 17
- DC.B RIGHT+UP+A_BUTTON,18,0,0 17
- DC.W 0,43H,0,0 18
- DC.B DOWN,0,0,0,0,0,0,0 19
- DC.B RIGHT+DOWN,21,0,0,0,0,0,0 20
- DC.B RIGHT+DOWN+A_BUTTON,22,0,0,0,0,0,0 21
- DC.W 0,26H,0,0 22
- DC.B DOWN,0,0,0,0,0,0,0 23
- DC.B LEFT,25,0,0,0,0,0,0 24
- DC.B RIGHT,26,0,0,0,0,0,0 25
- DC.B RIGHT+C_BUTTON,27,C_BUTTON,27,0,0,0,0 26
- DC.W 0,42H,0,0 27
- DC.B LEFT,0,0,0,0,0,0,0 28
- DC.B RIGHT,30,LEFT+DOWN,6,0,0,0,0 29
- DC.B RIGHT+A_BUTTON,31,A_BUTTON,31,0,0,0,0 30
- DC.W 0,45H,0,0
- INCLUDE WORK.INC
|