HK3_SET.SRC 21 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276
  1. ;************************************************************************
  2. ;* *
  3. ;* *HK3 DATA ADDRESS SETTING PROGRAM *
  4. ;* presented by k.morikawa *
  5. ;* 1992/4/3~ *
  6. ;************************************************************************
  7. SECT HK3,,C
  8. ;by STATE_CHK
  9. XREF SPECIAL_STATE_CHK,ATTACK_STATE_CHK
  10. XREF SCREEN_LIM_CHECK,AT_BIT_CHK
  11. ;by COM_OPE
  12. XREF COMMAND_OPERATION
  13. XREF LEVER_SET
  14. XREF DAMAGE_CUT
  15. ;by HK3_SUB
  16. XREF SET_RD16,SET_RD32,ACTION_TIMER_SET
  17. XREF ACT_TYPE_READ,DISTANCE_SEARCH
  18. XREF TYPE1_SET,TYPE2_SET,TYPE3_SET
  19. ;by EM_DATA
  20. XREF DIS_SEQ_TBL,DEF_SEQ_TBL,SPECIAL_TBL
  21. XREF SRCH_INIT_TBL,ACTION_TABLE
  22. XREF REST_TIME_TBL
  23. XREF FORCE_TBL,LIFE_TBL,TBLNO_TBL
  24. XREF NML_SEQ_TBL,SP_SEQ_TBL
  25. XREF SELECT_DISTANCE,STATE_DATA_TBL
  26. XREF AF_WAIT_TBL
  27. ;by EM_DATA
  28. XREF DEFENCE_TBL
  29. ;by EM_PACK
  30. XREF PACK_TYPE,PACK_CHG
  31. ;by EM_FRONT
  32. XREF DIS_FRNT_TBL
  33. ;by EM_BACK
  34. XREF DIS_BACK_TBL
  35. ;by GAME_SYM
  36. XREF RAND8
  37. XREF COM_INT
  38. INCLUDE LABEL.INC
  39. INCLUDE HFLAG.INC
  40. INCLUDE EM_MAC2.INC
  41. PLAY_ATTACK_CHECK:
  42. BTST.B #BHS_JUMP,HERO_STATE+HERO_OFFSET(A6)
  43. BNE.S PAC_OFF
  44. CMP.W #20H,ACT_CTRL+HERO_OFFSET(A6)
  45. BCC.S PAC_OFF
  46. TST.B TARGET_Y(A6)
  47. RTS
  48. PAC_OFF:
  49. MOVEQ.L #0,D0
  50. RTS
  51. NEAR_CHECK:
  52. CMP.W #64,X_DIS_NEG(A6)
  53. BLS.S NEAR_AT
  54. MOVEQ.L #0,D0
  55. RTS
  56. NEAR_AT:
  57. MOVEQ.L #1,D0
  58. RTS
  59. ;************************************************************************
  60. XDEF INIT_DIS_SET
  61. XDEF DIS_SRCH_CHK
  62. ;
  63. ; *initial_search_distance_setting program
  64. ;
  65. ; 1992/6/2
  66. ;
  67. INIT_DIS_SET:
  68. BTST.B #BHS_JUMP,HERO_STATE+HERO_OFFSET(A6)
  69. BNE COMMAND_CHECK
  70. JSR SPECIAL_STATE_CHK
  71. BNE SPECIAL_MODE_SET
  72. JSR NEAR_CHECK(PC)
  73. BNE NEXT_ACTION_SET
  74. JSR.S PLAY_ATTACK_CHECK(PC)
  75. BNE DEFENCE_SET
  76. ;
  77. ; JSR AT_BIT_CHK
  78. ; BEQ DIS_SRCH_1
  79. ;
  80. ; JSR AT_CHK_SET(PC)
  81. ; BNE DEFENCE_SET
  82. DIS_SRCH_1:
  83. JSR SCREEN_LIM_CHECK
  84. BNE SC_LIM_SET
  85. MOVE.B DIS_MODE(A6),D1
  86. CMP.B MOVE_MODE(A6),D1
  87. ; BTST.B #DIS_SRCH_MODE,PLAYER_CONTROL(A6)
  88. BEQ.L NEXT_ACTION_SET
  89. BSR COMMAND_CHECK
  90. MOVE.B PLAY_LEVER+HERO_OFFSET(A6),D0
  91. BEQ.S DSCC_0
  92. AND.B #00001100B,D0
  93. CMP.B LIMIT_STOP(A6),D0
  94. BNE DSCC_0
  95. CLR.W PLAY_LEVER+HERO_OFFSET(A6)
  96. CLR.B ACT_ON(A6)
  97. JMP NEXT_ACTION_SET(PC)
  98. DSCC_0:
  99. TST.B ACT_ON(A6)
  100. BNE.S DIS_SRCH_CHK_CONT
  101. MOVEQ.L #0,D1
  102. MOVE.B MOVE_MODE(A6),D1
  103. BRA DIS_SRCH_CHK_111
  104. DIS_SRCH_CHK_CONT:
  105. RTS
  106. DIS_SRCH_CHK:
  107. ; JSR ACTION_TIMER_SET
  108. MOVE.W #1,EM_STEP(A6)
  109. LEA.L SRCH_INIT_TBL,A0
  110. MOVE HERO_TYPE+HERO_OFFSET(A6),D0
  111. ADD.W D0,D0
  112. ADD.W D0,D0
  113. MOVE.W LEVEL_TEMP(A5),D1
  114. LSR.W #1,D1
  115. ADD.W D1,D0
  116. LSL.W #4,D0
  117. ADD.W D0,A0
  118. JSR SET_RD16 ;D0 = random_data
  119. MOVEQ.L #0,D1
  120. MOVE.B (A0,D0),D1
  121. ; CMP.B DIS_MODE(A6),D1
  122. ; BEQ.L NEXT_ACTION_SET
  123. ;
  124. DIS_SRCH_CHK_111:
  125. ADD D1,D1
  126. ;
  127. ; checker front_move or back_move
  128. ;
  129. MOVE.L ANOTHER_PLAYER(A6),A0
  130. MOVE X_POSITION+HERO_OFFSET(A0),D0
  131. LEA.L DIS_SHORT(A6),A1 ;searching distance adrs
  132. MOVE (A1,D1),D1
  133. MOVEQ.L #1,D3
  134. BTST.B #ACTAT_FLIP,ACT_ATTR(A3)
  135. BNE ID_SET_1
  136. SUBQ #1,D3
  137. NEG D1
  138. ID_SET_1:
  139. ADD D1,D0 ;distance_mode v_ram_address_set
  140. ADDQ #2,D3
  141. SUB X_POSITION+HERO_OFFSET(A6),D0
  142. BPL ID_SET_2
  143. SUBQ #2,D3
  144. NEG D0
  145. ID_SET_2:
  146. LEA.L ACTION_SET(PC),A0
  147. D3R_ADD
  148. JMP (A0,D3)
  149. ACTION_SET:
  150. BRA BACK_ACTION ;0
  151. BRA FRONT_ACTION ;1
  152. BRA FRONT_ACTION ;2
  153. BRA BACK_ACTION ;3
  154. ;
  155. ; front_action_set
  156. ;
  157. FRONT_ACTION:
  158. LEA.L DIS_FRNT_TBL,A1
  159. JMP MOVE_SELECT
  160. ;
  161. ; back_action_set
  162. ;
  163. BACK_ACTION:
  164. ; NEG D0
  165. LEA.L DIS_BACK_TBL,A1
  166. MOVE_SELECT:
  167. LEA.L SELECT_DISTANCE,A0
  168. MOVE HERO_TYPE+HERO_OFFSET(A6),D3
  169. SUBQ #2,D3
  170. ADD D3,D3
  171. ADD D3,D3
  172. ADDA D3,A0
  173. ;D3 keep
  174. MOVEQ.L #0,D1
  175. MOVEQ.L #3-1,D7
  176. MVSEL_1:
  177. CMP (A0)+,D0
  178. BLT.S MVSEL_2
  179. ADDQ #1,D1
  180. MVSEL_2:
  181. DBRA D7,MVSEL_1
  182. TST.B D1
  183. BEQ.L NEXT_MODE_SET
  184. CLR.B DEF_IN_COUNT(A6)
  185. SUBQ.B #1,D1
  186. MOVE.B D1,MOVE_MODE(A6)
  187. MOVEQ.L #0,D1
  188. MOVE.B DIS_MODE(A6),D1
  189. ADDQ.B #1,D1
  190. ADD D1,D1
  191. ADD D3,D3
  192. ADD D3,D1
  193. ADDA (A1,D1),A1
  194. ADDA D1,A1
  195. MOVE (A1),D0
  196. ADDA #2,A1
  197. LEA.L PACK_TYPE,A0
  198. ADD D0,D0
  199. ADDA (A0,D0),A0
  200. ADDA D0,A0
  201. MOVEQ.L #0,D1
  202. MOVE.B (A0)+,D1 ;max_num(data size)
  203. JSR SET_RD16 ;0~15(D0)
  204. JSR PACK_CONV(PC)
  205. AND D1,D0
  206. MOVE.B (A0,D0),D0 ;from pack_number to act_tbl_num
  207. SUBQ.B #1,D0
  208. D0R_ADD
  209. ADD.B MOVE_MODE(A6),D0
  210. ANDI #00FFH,D0
  211. MOVE.B (A1,D0),D0 ;action_type_set
  212. MOVE.B D0,DG_TBLNO(A6)
  213. JSR ATT_SET(PC)
  214. CLR ACT_COM(A6)
  215. MOVE.B #1,ACT_ON(A6)
  216. BRA COMMAND_CHECK
  217. NEXT_MODE_SET:
  218. ; MOVE.B SEARCH_MODE(A6),DIS_MODE(A6)
  219. NEXT_ACTION_SET:
  220. CLR.B STATE_MODE(A6)
  221. ; JSR ACTION_TIMER_SET
  222. MOVE.B NOW_STATE(A6),STATE_MODE(A6)
  223. JSR ACT_DATA_SET
  224. CLR ACT_COM(A6)
  225. CLR.B PLAYER_CONTROL(A6)
  226. CLR.B NON_DEF_TIME(A6)
  227. BRA ATTACK_SET
  228. ;************************************************************************
  229. XDEF ACT_DATA_SET
  230. STATE_GET:
  231. MOVE.L A0,-(SP)
  232. MOVE.L ANOTHER_PLAYER+HERO_OFFSET(A6),A0
  233. MOVE.W ACT_CTRL(A0),D0
  234. MOVE.B STATE_CONV(PC,D0.W),D1
  235. MOVE.L (SP)+,A0
  236. RTS
  237. STATE_CONV:
  238. DC.B 0,0,0,0,0,0,1,1
  239. DC.B 1,0,2,2,0,0,0,0
  240. DC.B 0,0,0,0,0,3,4,0
  241. DC.B 0,0,0,0,0,0,0,0
  242. DC.B 0,0,0,0,0,0,3,1
  243. DC.B 3,0,0,0,0,0,0,0
  244. DC.B 0,0,0,0,0,0,0,1
  245. DC.B 3,3,3,0,0,0,0,0
  246. DC.B 0,3,0,0,0,0,0,0
  247. DC.B 0,0,0,0,0,0,0,0
  248. ;
  249. ; 1992/5/25
  250. ACT_DATA_SET:
  251. LEA.L ACTION_TABLE,A0
  252. MOVEQ.L #0,D0
  253. MOVEQ.L #0,D1
  254. MOVE.B NML_SEQ_LV(A6),D0 ;patern_no state
  255. ADD D0,D0
  256. ADD D0,D0
  257. MOVE.L (A0,D0),A0
  258. BSR STATE_GET
  259. ; MOVEQ.L #0,D1
  260. ; MOVE.B STATE_MODE(A6),D1 ;player_state
  261. ; CMP #6,D1
  262. ; BLT STATE_SKIP
  263. ;
  264. ; MOVEQ.L #0,D1
  265. STATE_SKIP:
  266. CLR.B STATE_MODE(A6)
  267. MOVE.B D1,ATTACK_STATE(A6)
  268. D1R_ADD
  269. MOVE.L (A0,D1),A0
  270. MOVEQ.L #0,D0
  271. MOVE.B MINE_STATE(A6),D0 ;enemy_mine_state
  272. MOVE.B D0,ATTACK_STATE2(A6)
  273. D0R_ADD
  274. MOVE.L (A0,D0),A0
  275. ;
  276. ; top_address setting
  277. ;
  278. MOVEQ.L #3,D0 ;data_address top_set
  279. MOVEQ.L #0,D1
  280. MOVE.B ATTACK_STATE(A6),D1
  281. OR.B ATTACK_STATE2(A6),D1
  282. BNE.S ATS_0001
  283. CMP.W #72,X_DIS_NEG(A6)
  284. BLS.S ATS_0000
  285. ATS_0001:
  286. MOVE.B DIS_MODE(A6),D0
  287. ATS_0000:
  288. ADD D0,D0
  289. MOVE HERO_TYPE+HERO_OFFSET(A6),D1
  290. LSL #3,D1
  291. ADD D1,D0
  292. ADDA (A0,D0),A0
  293. ADDA D0,A0
  294. MOVE.L A0,ACTION_ADRS(A6)
  295. JSR TBL_ADRS_SET(PC)
  296. MOVE.W #0,ACT_COM(A6)
  297. MOVE.B #1,ATTACK_ON(A6)
  298. MOVE.B #1,ACT_ON(A5)
  299. RTS
  300. ;************************************************************************
  301. XDEF FORCE_DATA_SET
  302. ;
  303. ;
  304. ;
  305. FORCE_DATA_SET:
  306. LEA.L FORCE_TBL,A0
  307. MOVE HERO_TYPE+HERO_OFFSET(A6),D3
  308. ADD D3,D3
  309. ADD D3,D3
  310. MOVEQ.L #0,D1
  311. MOVE.B HERO_SPIRIT+HERO_OFFSET(A6),D1
  312. MOVE #-1,D0
  313. FORCE_LV_SET:
  314. ADDQ #1,D0
  315. CMP.B (A0,D0),D1
  316. BCS FORCE_LV_SET
  317. ADD.B D0,D0
  318. ADD.B D0,D0
  319. MOVE.B D0,FORCE_MODE(A6) ;now_select_mode(force)
  320. LIFE_DATA_SET:
  321. LEA.L LIFE_TBL,A0
  322. ADDA D3,A0
  323. MOVEQ.L #0,D1
  324. MOVE HERO_LIFE+HERO_OFFSET(A6),D1
  325. MOVE #-1,D0
  326. LIFE_LV_SET:
  327. ADDQ #1,D0
  328. CMP.B (A0,D0),D1
  329. BCS LIFE_LV_SET
  330. MOVE.B D0,LIFE_MODE(A6)
  331. REST_TIME_SRCH:
  332. LEA.L REST_TIME_TBL(PC),A0
  333. ADDA D3,A0
  334. JSR STAGE_TIME_RET(PC)
  335. MOVE #-15,D1
  336. RT_LV_SET:
  337. ADD #15,D1
  338. CMP.B (A0,D1),D0
  339. BCS RT_LV_SET
  340. CMP #16,D1
  341. BLT RT_MODE_SET
  342. MOVE #15,D1
  343. RT_MODE_SET
  344. MOVE.B D1,TIME_MODE(A6)
  345. LEVEL_SELECT:
  346. MOVEQ.L #0,D0
  347. MOVE.B LIFE_MODE(A6),D0
  348. ADD.B FORCE_MODE(A6),D0
  349. ADD.B TIME_MODE(A6),D0
  350. CMP #16,D0
  351. BLE NORMAL_SET
  352. MOVEQ.L #15,D0
  353. NORMAL_SET:
  354. LEA.L NML_SEQ_TBL,A0
  355. MOVE HERO_TYPE+HERO_OFFSET(A6),D3
  356. SUBQ #2,D3
  357. LSL #4,D3
  358. ADDA D3,A0
  359. MOVE.B (A0,D0),NML_SEQ_LV(A6)
  360. SPECIAL_SET:
  361. LEA.L SP_SEQ_TBL,A0
  362. ADDA D3,A0
  363. MOVE.B (A0,D0),SP_SEQ_LV(A6)
  364. DISTANCE_SET:
  365. LEA.L DIS_SEQ_TBL,A0
  366. ADDA D3,A0
  367. MOVE.B (A0,D0),DIS_SEQ_LV(A6)
  368. LEA.L DEF_SEQ_TBL,A0
  369. ADDA D3,A0
  370. MOVE.B (A0,D0),DEF_SEQ_LV(A6)
  371. RTS
  372. ;************************************************************************
  373. XDEF TBL_ADRS_SET
  374. ;
  375. ;
  376. ;
  377. ; *receive_resista:A1(action_table_top)
  378. ;
  379. TBL_ADRS_SET:
  380. MOVE.L ACTION_ADRS(A6),A1
  381. MOVE.W (A1),D0
  382. ;
  383. ; soft_dip_level setting
  384. ;
  385. ADDA.W #2,A1 ;pack_data size skip
  386. LEA.L PACK_TYPE,A0
  387. ADD.W D0,D0
  388. ADDA.W (A0,D0),A0
  389. ADDA.W D0,A0
  390. MOVEQ.L #0,D1
  391. MOVE.B (A0)+,D1 ;max_num(data size)
  392. JSR SET_RD16 ;0~15(D0)
  393. JSR PACK_CONV(PC)
  394. AND.W D1,D0
  395. MOVE.B (A0,D0),D0 ;from pack_number to act_tbl_num
  396. SUBQ.B #1,D0
  397. ANDI.W #00FFH,D0
  398. MOVE.B (A1,D0),D0
  399. MOVE.B D0,DG_TBLNO(A6)
  400. ATT_SET:
  401. LEA.L TBLNO_TBL,A0
  402. JSR TYPE1_SET
  403. CMP.W -2(A0),D0
  404. BLS.S ATT_SET_1
  405. MOVEQ.L #2BH,D0
  406. ATT_SET_1:
  407. SUBQ.W #1,D0
  408. ADD.W D0,D0
  409. ADDA.W (A0,D0),A0
  410. ADDA.W D0,A0
  411. MOVE.L A0,ACTION_ADRS(A6)
  412. RTS
  413. PACK_CONV:
  414. MOVEM.L D2-D3/A0,-(SP)
  415. MOVEQ.L #0,D2
  416. CMP.B #7,D1
  417. BCS.S PACK_NO_CONV
  418. BEQ.S PACK_CONV_1
  419. MOVEQ.L #64,D2
  420. PACK_CONV_1:
  421. MOVE.W LEVEL_TEMP(A5),D3
  422. ADD.W D3,D3
  423. MOVE.W PACK_LEVEL(PC,D3.W),D3
  424. BMI.S PACK_NO_CONV
  425. ADD.W D3,D2
  426. LEA.L PACK_CHG,A0
  427. LEA.L 0(A0,D2.W),A0
  428. JSR.S RAND8
  429. AND.W #3FH,D0
  430. MOVE.B 0(A0,D0.W),D0
  431. PACK_NO_CONV:
  432. MOVEM.L (SP)+,D2-D3/A0
  433. RTS
  434. PACK_LEVEL:
  435. DC.W 0,0,-1,-1,128,128,256,256
  436. ;************************************************************************
  437. XDEF SPECIAL_ADRS_SET
  438. ;
  439. ;
  440. ;
  441. SPECIAL_ADRS_SET:
  442. MOVE.L ANOTHER_PLAYER(A6),A1
  443. JSR ACT_TYPE_READ(PC)
  444. ; MOVEQ.L #0,D0
  445. ; MOVE.B STATE_MODE(A6),D0
  446. ; SUBQ.B #1,D0
  447. MOVE.B D4,D0
  448. BPL NEXT_ACTION_SET
  449. AND.W #7FH,D0
  450. SUBQ.B #1,D0
  451. D0R_ADD
  452. LEA.L SPECIAL_TBL,A0
  453. TST.B SP_SEQ_LV(A6)
  454. BEQ.S SPAS_00
  455. LEA.L 44(A0),A0
  456. SPAS_00:
  457. MOVE.L (A0,D0),A0
  458. ;
  459. ; top_address setting
  460. ;
  461. MOVEQ.L #0,D0 ;data_address top_set
  462. MOVE.B DIS_MODE(A6),D0
  463. ADD.W D0,D0
  464. MOVE.W HERO_TYPE+HERO_OFFSET(A6),D1
  465. LSL.W #3,D1
  466. ADD.W D0,D1
  467. ADDA.W (A0,D1),A0
  468. ADDA.W D1,A0
  469. MOVE.L A0,ACTION_ADRS(A6)
  470. JSR TBL_ADRS_SET(PC)
  471. RTS
  472. ;************************************************************************
  473. ;
  474. ;
  475. ;
  476. STAGE_TIME_RET:
  477. MOVEQ.L #0,D0
  478. MOVE.B STAGE_TIME(A5),D0
  479. MOVE.W D0,D1
  480. ANDI.W #0FH,D0
  481. LSR.W #4,D1
  482. ADD.B BCD_EXCHG_DATA(PC,D1),D0
  483. RTS
  484. BCD_EXCHG_DATA:; 0: 10: 20: 30: 40: 50: 60: 70: 80: 90
  485. DC.B 00H,0AH,14H,1EH,28H,32H,3CH,46H,50H,5AH
  486. ;
  487. ;************************************************************************
  488. XDEF SPECIAL_CHECK
  489. ;
  490. ;
  491. ;
  492. SPECIAL_MODE_SET:
  493. MOVE #EM_SPECIAL,EM_STEP(A6)
  494. CLR.B PLAYER_CONTROL(A6)
  495. CLR.B STATE_CNT(A6)
  496. CLR ACT_COM(A6)
  497. MOVE.L ACTION_ADRS(A6),A0
  498. CMP.B #6,(A0)
  499. BEQ DEF_SET_000
  500. BSET.B #SPECIAL_MODE,PLAYER_CONTROL(A6)
  501. BRA COMMAND_CHECK
  502. SPECIAL_CHECK:
  503. ; MOVE.L ANOTHER_PLAYER(A6),A0
  504. ; TST.B SPECIAL_USE(A0)
  505. ; BEQ COMMAND_CHECK
  506. JSR SPECIAL_STATE_CHK
  507. BNE SPECIAL_MODE_SET
  508. CMP.B #8,SPEED_RANK(A6)
  509. BCC COMMAND_CHECK
  510. JSR.S PLAY_ATTACK_CHECK(PC)
  511. BEQ COMMAND_CHECK
  512. CLR.B SPEED_RANK(A6)
  513. JMP DEFENCE_SET(PC)
  514. ; CLR ACT_COM(A6)
  515. MOVE.W #00001110B,D0
  516. AND.B HERO_STATE+HERO_OFFSET(A6),D0
  517. BNE SP_CHK_1
  518. BSR COMMAND_OPERATION
  519. TST.B ACT_ON(A6)
  520. BNE.S SP_CHK_1
  521. CLR.B SPEED_RANK(A6)
  522. TST.B NOW_STATE(A6)
  523. BPL.S SP_CHK_1
  524. MOVE.W #12,EM_STEP(A6)
  525. SP_CHK_1:
  526. RTS
  527. ;************************************************************************
  528. XDEF ATTACK_CHECK
  529. ;
  530. ;
  531. ;
  532. ATTACK_SET:
  533. MOVE #EM_ATTACK,EM_STEP(A6)
  534. CLR.B PLAYER_CONTROL(A6)
  535. CLR.B STATE_CNT(A6)
  536. BSET.B #ATTACK_MODE,PLAYER_CONTROL(A6)
  537. CLR.B DEF_IN_COUNT(A6)
  538. CLR ACT_COM(A6)
  539. BRA COMMAND_CHECK
  540. ATTACK_CHECK:
  541. CMP.B #5,STEP2+HERO_OFFSET(A6)
  542. BEQ.S DM_NON
  543. BTST.B #BHS_DAMAGE,HERO_STATE+HERO_OFFSET(A6)
  544. BNE DAMAGE_CUT
  545. DM_NON:
  546. JSR SPECIAL_STATE_CHK
  547. BNE SPECIAL_MODE_SET
  548. ; TST.B NON_DEF_TIME(A6)
  549. ; BNE.S ATC_000
  550. JSR.S PLAY_ATTACK_CHECK(PC)
  551. BNE DEFENCE_SET
  552. ; BRA AT_CHK_1
  553. ATC_000:
  554. ; SUBQ.B #1,NON_DEF_TIME(A6)
  555. AT_CHK_1:
  556. JSR SCREEN_LIM_CHECK
  557. BNE SC_LIM_SET
  558. ; MOVE.W #00001110B,D0
  559. ; AND.B HERO_STATE+HERO_OFFSET(A6),D0
  560. ; BNE AT_CHK_2
  561. MOVE.B LIMIT_STOP(A6),D0
  562. BEQ.S AT_CHK_101
  563. CMP.B PLAY_LEVER+HERO_OFFSET(A6),D0
  564. BNE.S AT_CHK_101
  565. CLR.W PLAY_LEVER+HERO_OFFSET(A6)
  566. MOVE.W #1,EM_STEP(A6)
  567. MOVEQ.L #0,D1
  568. JMP DIS_SRCH_CHK_111(PC)
  569. AT_CHK_101:
  570. MOVE.W #00011110B,D0
  571. AND.B HERO_STATE+HERO_OFFSET(A6),D0
  572. BNE AT_CHK_102
  573. CMP.W #19H,ACT_CTRL+HERO_OFFSET(A6)
  574. BEQ.S AT_CHK_102
  575. CMP.B #1,ATTACK_STATE2(A6)
  576. BEQ.S AT_CHK_102
  577. BSR STATE_GET
  578. CMP.B ATTACK_STATE(A6),D1
  579. BNE NEXT_ACTION_SET
  580. AT_CHK_102:
  581. BSR COMMAND_CHECK
  582. TST.B ATTACK_ON(A6)
  583. BNE AT_CHK_2
  584. JSR.S RAND8
  585. MOVE.W HERO_TYPE+HERO_OFFSET(A6),D1
  586. ADD.W D1,D1
  587. ADD.W D1,D1
  588. ADD.W D1,D1
  589. ADD.W LEVEL_TEMP(A5),D1
  590. MOVE.B NEXT_ATTACK_PER(PC,D1.W),D1
  591. CMP.B D1,D0
  592. BCS NEXT_ACTION_SET
  593. MOVE.W #1,EM_STEP(A6)
  594. MOVEQ.L #0,D1
  595. MOVE.B DIS_MODE(A6),D1
  596. MOVE.B NEXT_AT_DIS(PC,D1.W),D1
  597. JMP DIS_SRCH_CHK_111(PC)
  598. AT_CHK_2:
  599. RTS
  600. NEXT_AT_DIS:
  601. DC.B 2,2,0,0
  602. NEXT_ATTACK_PER:
  603. DC.B 060H,068H,070H,080H,090H,0A0H,0B0H,0C0H
  604. DC.B 060H,068H,070H,080H,090H,0A0H,0B0H,0C0H
  605. ; DC.B 040H,048H,050H,060H,070H,080H,0A0H,0C0H 1
  606. DC.B 030H,038H,040H,050H,060H,080H,0A0H,0C0H 1
  607. DC.B 040H,048H,050H,060H,070H,080H,0A0H,0C0H 2
  608. DC.B 050H,060H,070H,080H,090H,0B0H,0D0H,0F0H 3
  609. DC.B 050H,060H,070H,080H,090H,0B0H,0D0H,0D0H 4
  610. DC.B 030H,038H,048H,058H,060H,068H,070H,078H 5
  611. DC.B 050H,058H,060H,070H,080H,0A0H,0B0H,0C0H 6
  612. DC.B 080H,088H,090H,098H,0A0H,0B0H,0C0H,0D0H 7
  613. DC.B 0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H 8
  614. ;************************************************************************
  615. ;
  616. ;
  617. ;
  618. XDEF SCLIM_CHECK
  619. SC_LIM_SET:
  620. MOVE #EM_SCLIM,EM_STEP(A6)
  621. CLR.B PLAYER_CONTROL(A6)
  622. CLR.B STATE_CNT(A6)
  623. CLR ACT_COM(A6)
  624. SCLIM_CHECK:
  625. JSR SPECIAL_STATE_CHK
  626. BNE SPECIAL_MODE_SET
  627. JSR.S PLAY_ATTACK_CHECK(PC)
  628. BNE DEFENCE_SET
  629. ; JSR AT_BIT_CHK
  630. ; BEQ SCLIM_CHK_1
  631. ;
  632. ; JSR AT_CHK_SET(PC)
  633. ; BNE DEFENCE_SET
  634. SCLIM_CHK_1:
  635. MOVE.W #00001110B,D0
  636. AND.B HERO_STATE+HERO_OFFSET(A6),D0
  637. BNE SCLIM_CHK_2
  638. BRA COMMAND_CHECK
  639. SCLIM_CHK_2:
  640. RTS
  641. ;************************************************************************
  642. ;
  643. ;
  644. ;
  645. COMMAND_CHECK:
  646. TST EM_INT(A6)
  647. BEQ COM_CHK_1
  648. JSR COM_INT
  649. COM_CHK_1:
  650. JSR COMMAND_OPERATION
  651. BTST.B #COM_RESULT_END,PLAYER_CONTROL(A6)
  652. BEQ COM_CHECK_NEXT
  653. CLR.B STATE_MODE(A6)
  654. MOVE #EM_INIT,EM_STEP(A6)
  655. BTST.B #DAMAGE_END,PLAYER_CONTROL(A6)
  656. BEQ COM_CHECK_NEXT
  657. MOVE #EM_ATTACK,EM_STEP(A6)
  658. COM_CHECK_NEXT:
  659. RTS
  660. ;************************************************************************
  661. XDEF AT_CHK_SET
  662. ;
  663. ;
  664. ;
  665. AT_CHK_SET:
  666. MOVE.L ANOTHER_PLAYER(A6),A2
  667. MOVE #00000110B,D0
  668. AND.B HERO_STATE+HERO_OFFSET(A2),D0
  669. LSR #1,D0
  670. MOVE.B AT_EXG_DATA1(PC,D0),D0
  671. MOVE #00110000B,D1
  672. AND.B HERO_STATE+HERO_OFFSET(A2),D1
  673. LSR.B #4,D1
  674. CMP #34h,ACT_CTRL+HERO_OFFSET(A2)
  675. BNE ATCHK_S1
  676. ADDQ.B #2,D1
  677. ATCHK_S1:
  678. MOVE.B AT_EXG_DATA2(PC,D1),D1
  679. ADD.B D1,D0
  680. MOVE HERO_TYPE+HERO_OFFSET(A2),D2
  681. LSL #4,D2
  682. ADD D2,D0
  683. MOVE AT_DEF_DATA(PC,D0),D0
  684. CMP X_DIS_NEG(A6),D0
  685. BGE AT_BF_SET
  686. MOVEQ.L #0,D0
  687. RTS
  688. AT_BF_SET:
  689. MOVEQ.L #1,D0
  690. RTS
  691. AT_EXG_DATA1:
  692. DC.B 0,4,6,0
  693. AT_EXG_DATA2:
  694. DC.B 0,4,8,0
  695. AT_DEF_DATA
  696. ;1p
  697. DC.W 0,0
  698. DC.W 140 ;punch
  699. DC.W 120 ;kick
  700. DC.W 185 ;jump_punch
  701. DC.W 185 ;jump_kick
  702. DC.W 165 ;down_punch
  703. DC.W 165 ;down_kick
  704. ;2p
  705. DC.W 0,0
  706. DC.W 140 ;punch
  707. DC.W 120 ;kick
  708. DC.W 185 ;jump_punch
  709. DC.W 185 ;jump_kick
  710. DC.W 165 ;down_punch
  711. DC.W 165 ;down_kick
  712. XDEF AT_BF_CHECK
  713. ;
  714. ;
  715. ;
  716. AT_BF_CHECK
  717. MOVEQ.L #0,D0
  718. MOVE.L ACTION_ADRS(A6),A0
  719. BRA LEVER_SET
  720. ;************************************************************************
  721. UP_GARD EQU 14h+80h
  722. DOWN_GARD EQU 08h+80h
  723. DEFENCE_SET:
  724. MOVE #EM_DEF_WAIT,EM_STEP(A6)
  725. MOVE.L A1,-(SP)
  726. MOVE.L ANOTHER_PLAYER(A6),A1
  727. MOVE HERO_TYPE+HERO_OFFSET(A1),D0
  728. MOVE.L (SP)+,A1
  729. ADD.W D0,D0
  730. ADD.W D0,D0
  731. ADD.W D0,D0
  732. MOVEQ.L #0,D1
  733. MOVE.B DEF_SEQ_LV(A6),D1
  734. ADD D1,D1
  735. ADD D1,D1
  736. ADD D1,D0
  737. LEA DEFENCE_TBL,A0
  738. MOVE.L (A0,D0),A0
  739. MOVE HERO_TYPE+HERO_OFFSET(A6),D0
  740. SUB.B #2,D0
  741. LSL #5,D0 ;defence_tbl top_address
  742. MOVEQ.L #0,D1
  743. MOVE.B NOW_STATE(A6),D1
  744. BPL.S DDD000
  745. MOVEQ.L #0,D1
  746. DDD000:
  747. MOVE.B D1,STATE_MODE(A6)
  748. MOVE.B D1,TEST_R+1(A5)
  749. CMP.B #7,D1
  750. BCS.S DDDOOO
  751. MOVE.B D1,STATE_MODE(A6)
  752. MOVE.B D1,TEST_R+1(A5)
  753. SUB #7,D1
  754. DDDOOO:
  755. ADD D1,D1
  756. ADD D1,D0
  757. ADDA (A0,D0),A0
  758. ADDA D0,A0
  759. MOVE.L A0,ACTION_ADRS(A6)
  760. JSR TBL_ADRS_SET
  761. MOVE.W #0,ACT_COM(A6)
  762. ANDI.B #11000111B,PLAYER_CONTROL(A6)
  763. CMP.B #6,(A0)
  764. BNE CHG_ATTACK
  765. DEF_SET_000:
  766. ; MOVE.B 1(A0),SEARCH_WAIT(A6)
  767. MOVE #EM_DEF_WAIT,EM_STEP(A6)
  768. CLR.B ATTACK_ON(A6)
  769. CMP.B #4,2(A0)
  770. BEQ DEF_SET_1
  771. MOVEQ.L #0,D0
  772. MOVE.B #DOWN_GARD,D0
  773. JSR LEVER_SET
  774. MOVE.B #6,BEFORE_LEVER(A6)
  775. RTS
  776. DEF_SET_1:
  777. MOVEQ.L #0,D0
  778. MOVE.B #UP_GARD,D0
  779. JSR LEVER_SET
  780. MOVE.B #4,BEFORE_LEVER(A6)
  781. RTS
  782. CHG_ATTACK:
  783. CLR.B SPEED_RANK(A6)
  784. MOVE.B #30,NON_DEF_TIME(A6)
  785. BRA ATTACK_SET
  786. ;************************************************************************
  787. XDEF DEFENCE_WAIT
  788. ;
  789. ;
  790. ;
  791. DEFENCE_WAIT:
  792. BTST.B #BHS_DAMAGE,HERO_STATE+HERO_OFFSET(A6)
  793. BNE DEF_NEXT_DMG ;damage_check
  794. ; TST.B SEARCH_WAIT(A6)
  795. ; BNE DEF_WAIT_10
  796. AF_DEF:
  797. MOVE.L ANOTHER_PLAYER+HERO_OFFSET(A6),A0
  798. TST.B SPECIAL_USE(A0)
  799. BNE.S DEF_WAIT_11
  800. TST.B TARGET_Y(A6)
  801. BNE.S DEF_WAIT_11
  802. JMP DEFENCE_SET(PC)
  803. DEF_WAIT_10:
  804. SUBQ.B #1,SEARCH_WAIT(A6)
  805. DEF_WAIT_11:
  806. MOVEQ.L #0,D0
  807. ; MOVE.B BEFORE_LEVER(A6),D0
  808. MOVE.L ACTION_ADRS(A6),A0
  809. MOVE.B 2(A0),D0
  810. BRA LEVER_SET
  811. XDEF HK3_DMG,HK3_JUMP_DMG
  812. DEF_NEXT_DMG:
  813. MOVE.W #15,EM_STEP(A6)
  814. HK3_DMG:
  815. BTST.B #BHS_JUMP,HERO_STATE+HERO_OFFSET(A6)
  816. BEQ.S HK3_DMG_1
  817. MOVE.W #16,EM_STEP(A6)
  818. HK3_DMG_1:
  819. CMP.W #0DH,ACT_CTRL+HERO_OFFSET(A6)
  820. BEQ.S HK3_DMG_2
  821. CMP.W #13H,ACT_CTRL+HERO_OFFSET(A6)
  822. BNE OFF_DMG
  823. HK3_DMG_2:
  824. MOVEQ.L #0,D0
  825. ; MOVE.B BEFORE_LEVER(A6),D0
  826. MOVE.L ACTION_ADRS(A6),A0
  827. MOVE.B (A0),D0
  828. BRA LEVER_SET
  829. OFF_DMG:
  830. MOVE #EM_DEF_WAIT,EM_STEP(A6)
  831. JMP AF_DEF(PC)
  832. HK3_JUMP_DMG:
  833. CMP.B #5,STEP2+HERO_OFFSET(A6)
  834. BEQ OFF_JDMG
  835. CMP.W #0DH,ACT_CTRL+HERO_OFFSET(A6)
  836. BEQ.S HK3_JDMG_2
  837. CMP.W #13H,ACT_CTRL+HERO_OFFSET(A6)
  838. BNE OFF_JDMG
  839. HK3_JDMG_2:
  840. MOVEQ.L #0,D0
  841. ; MOVE.B BEFORE_LEVER(A6),D0
  842. MOVE.L ACTION_ADRS(A6),A0
  843. MOVE.B (A0),D0
  844. BRA LEVER_SET
  845. OFF_JDMG:
  846. JSR NEAR_CHECK(PC)
  847. BEQ.S OFF_JDMG_1
  848. CLR.B DEF_IN_COUNT(A6)
  849. CLR.B SPEED_RANK(A6)
  850. JMP NEXT_ACTION_SET(PC)
  851. OFF_JDMG_1:
  852. TST.B TARGET_Y(A6)
  853. BNE OFF_DMG
  854. CLR.B DEF_IN_COUNT(A6)
  855. CLR.B SPEED_RANK(A6)
  856. MOVE.W #1,EM_STEP(A6)
  857. JMP DIS_SRCH_CHK(PC)
  858. ;************************************************************************
  859. DEF_NEXT_CHECK:
  860. MOVE HERO_TYPE+HERO_OFFSET(A6),D1
  861. SUBQ #2,D1
  862. ADD D1,D1
  863. LEA.L AF_WAIT_TBL,A2
  864. ADDA (A2,D1),A2
  865. MOVEQ.L #0,D1
  866. MOVE.B STATE_MODE(A6),D1
  867. CLR.B STATE_MODE(A6)
  868. ; SUBQ.B #7,D1
  869. MOVE.B (A2,D1),SRCH_TIMER(A6)
  870. MOVE #EM_DEF_NEXT,EM_STEP(A6)
  871. MOVEQ.L #0,D0
  872. MOVE.B #UP_GARD,D0
  873. JSR DEF_STATE_READ(PC)
  874. BEQ DEF_UP_1
  875. MOVE.B #DOWN_GARD,D0
  876. DEF_UP_1:
  877. MOVE.L ACTION_ADRS(A6),A0
  878. BRA LEVER_SET
  879. ;************************************************************************
  880. XDEF DEFENCE_NEXT
  881. DEFENCE_NEXT:
  882. BTST.B #BHS_DAMAGE,HERO_STATE+HERO_OFFSET(A6)
  883. BNE SEARCH_SEND ;damage_check
  884. TST.B SRCH_TIMER(A6)
  885. BEQ DEFENCE_END
  886. SUB.B #1,SRCH_TIMER(A6)
  887. MOVE X_DIS_NEG(A6),D0
  888. CMP #190,D0
  889. BGT DEFENCE_END
  890. JSR REPEAT_STATE_CHK(PC)
  891. BNE SEARCH_SEND OKADA
  892. JSR DEF_STATE_READ(PC)
  893. BEQ DEF_UP
  894. DEF_DOWN:
  895. MOVE.B #30,SEARCH_WAIT(A6)
  896. MOVE #EM_DEF_DOWN,EM_STEP(A6)
  897. MOVE.B #0,BEFORE_STATE(A6)
  898. MOVE #DOWN_GARD,D0
  899. MOVE.L ACTION_ADRS(A6),A0
  900. JSR LEVER_SET
  901. BRA DOWN_DEFENCE
  902. DEF_UP:
  903. MOVE.B #30,SEARCH_WAIT(A6)
  904. MOVE #EM_DEF_UP,EM_STEP(A6)
  905. MOVE.B #0,BEFORE_STATE(A6)
  906. MOVE #UP_GARD,D0
  907. MOVE.L ACTION_ADRS(A6),A0
  908. JSR LEVER_SET
  909. ;************************************************************************
  910. XDEF UP_DEFENCE
  911. ;
  912. ;
  913. UP_DEFENCE:
  914. TST.B SEARCH_WAIT(A6)
  915. BEQ CHG_DEF_NEXT
  916. SUB.B #1,SEARCH_WAIT(A6)
  917. JSR REPEAT_STATE_CHK(PC)
  918. BNE CHG_DEF_NEXT
  919. MOVE #4,D0
  920. MOVE.L ACTION_ADRS(A6),A0
  921. BRA LEVER_SET
  922. ;************************************************************************
  923. XDEF DOWN_DEFENCE
  924. ;
  925. ;
  926. ;
  927. DOWN_DEFENCE:
  928. TST.B SEARCH_WAIT(A6)
  929. BEQ CHG_DEF_NEXT
  930. SUB.B #1,SEARCH_WAIT(A6)
  931. JSR REPEAT_STATE_CHK(PC)
  932. BNE CHG_DEF_NEXT
  933. MOVE #4+2,D0
  934. MOVE.L ACTION_ADRS(A6),A0
  935. BRA LEVER_SET
  936. ;************************************************************************
  937. CHG_DEF_NEXT:
  938. MOVE.B #0,NOW_STATE(A6)
  939. MOVE #EM_DEF_NEXT,EM_STEP(A6)
  940. SEARCH_SEND:
  941. MOVE.L ACTION_ADRS(A6),A0
  942. MOVEQ.L #00000010B,D0
  943. AND.B BEFORE_LEVER(A6),D0
  944. MOVE.L ANOTHER_PLAYER(A6),A2
  945. MOVE.B HERO_STATE+HERO_OFFSET(A2),D1
  946. ANDI.B #00000110B,D1
  947. BEQ S_SEND_END ;now_attack ?
  948. ORI.B #00000100B,D0
  949. S_SEND_END:
  950. MOVE.L ACTION_ADRS(A6),A0
  951. BRA LEVER_SET
  952. ;************************************************************************
  953. ; *return_resista :D0(not_equal => SEARCH_SEND)
  954. ; ( equal => defence_mode)
  955. REPEAT_STATE_CHK:
  956. MOVEQ.L #0,D0
  957. MOVE.L ANOTHER_PLAYER(A6),A2
  958. CLR.W (A5)
  959. MOVE.B WORK_N0+HERO_OFFSET(A2),(A5)
  960. MOVE.W (A5),D0
  961. CLR.W (A5)
  962. BTST.B #4,ACT_FLAG(A5,D0)
  963. BEQ REP_NON_SET ;now_attack ?
  964. MOVEQ.L #0,D0
  965. RTS
  966. MOVEQ.L #0,D1
  967. MOVE.B NOW_STATE(A6),D1
  968. CMP.B #7,D1
  969. BLT REP_STA_NEXT
  970. CMP.B BEFORE_STATE(A6),D1
  971. SEQ D0
  972. REP_NON_SET
  973. ADDQ.B #1,D0
  974. RTS
  975. REP_STA_NEXT:
  976. MOVEQ.L #0,D0
  977. RTS
  978. ;************************************************************************
  979. ; *return_resista :D0
  980. DEF_STATE_READ:
  981. MOVEQ.L #0,D0
  982. CMP.B #7,NOW_STATE(A6)
  983. BLT DEF_READ_END
  984. MOVEQ.L #0,D1
  985. MOVE.B NOW_STATE(A6),D1
  986. SUB.B #7,D1
  987. MOVE.B EXCHG_ATLV_DATA(PC,D1),D1
  988. SEQ D0
  989. ADDQ.B #1,D0
  990. DEF_READ_END:
  991. RTS
  992. EXCHG_ATLV_DATA:
  993. DC.B 0 ;ËÀÞØ ½ÄÚ°Ä ;1
  994. DC.B 0 ;Ð·Þ ½ÄÚ°Ä ;2
  995. DC.B 0 ;Ð·Þ Ì¯¸ ;3
  996. DC.B 0 ;ÎÞÃÞ¨ÌÞÛ° ;4
  997. DC.B 0 ;ËÀÞØ¥Öº¹ÞØ ;5
  998. DC.B 0 ;³¼Û¥Ïܼ¹ÞØ ;6
  999. DC.B 0 ;ÄËÞ¥Ïܼ¹ÞØ ;7
  1000. DC.B 1 ;Û°·¯¸ ;8
  1001. DC.B 1 ;¶¶ÞÐ ¾²¹Ý½Þ· ;9
  1002. DC.B 1 ;¶¶ÞÐ¥±¼ÊÞײ ;10
  1003. DC.B 0 ;ÄËÞ¹ÞÀÞÝ ¾²¹Ý ;11
  1004. DC.B 0 ;ÄËÞ¥Öº¹ÞØ ;12
  1005. DC.B 0 ;ËÞÙÄ¥±¯Êß° ;13
  1006. DC.B 0
  1007. ;************************************************************************
  1008. DEFENCE_END:
  1009. CLR ACT_COM(A6)
  1010. CLR.B STATE_MODE(A6)
  1011. CLR.B PLAYER_CONTROL(A6)
  1012. MOVE.B NOW_STATE(A6),STATE_MODE(A6)
  1013. JSR ACT_DATA_SET
  1014. MOVE #EM_ATTACK,EM_STEP(A6)
  1015. BRA ATTACK_CHECK
  1016. ;************************************************************************
  1017. INCLUDE WORK.INC
  1018. ;************************************************************************
  1019.