DUMMY.SRC 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856
  1. ;************************************************************************
  2. ;* BACK_OJBECT SETING & OUPUT PROGRAM *
  3. ;* version 1.04*10^-9 data 1991.10.7 *
  4. ;* version 0.07 data 1992/5/21 *
  5. ;* *
  6. ;************************************************************************
  7. XDEF LM_AHO,LM_HAKO,PM_AHO,PM_F_TREE
  8. XDEF BK_OBJECT_SET,PM_HAKO,BK_CHR_INIT
  9. XDEF LM_HAHEN,PM_HAHEN,B1_BUFFER_INIT
  10. XDEF PM_MAN,BOMB_INIT,BK_SET_LOOP
  11. XREF ?A5
  12. ;by BACK
  13. XREF GL
  14. ;by GAME_SUB
  15. XREF FREE_OBJ_WORK,FREE_OBJ_WORK_SUB,FREE_HERO_PWORK
  16. XREF GET_OBJ_BACK_ADRS
  17. ;by ACT_SUB
  18. XREF SET_HIT_AREA
  19. XREF REDUCTION_MOVE
  20. ;by DM_TBL
  21. XREF B_HAKO_TBL,BK_OBJ1_DATA,BK_OBJ2_DATA
  22. XREF EPR_HAKO1,KANBAN_DATA
  23. SECT GAME,,C
  24. INCLUDE SYS.INC @@@
  25. INCLUDE MACRO.INC @@@
  26. INCLUDE NEO_GEO.INC @@@
  27. INCLUDE LABEL.INC
  28. INCLUDE ACT_No.INC
  29. INCLUDE HFLAG.INC
  30. ;************************************************************************
  31. CHECK_MSB:
  32. TST.W TYPE(A6)
  33. BPL CHK_MSB_1
  34. ADDQ.W #4,SP ;called_prog_skip
  35. MOVE.W #0,TYPE(A6)
  36. CHK_MSB_1:
  37. RTS
  38. ;***********************************************************************
  39. ;
  40. ; back1_init_program 1991/10/31
  41. ; presented by k.morikawa
  42. ;
  43. B1_BUFFER_INIT:
  44. MOVEQ.L #0,D0 ;byte*4*8
  45. MOVEQ.L #0,D1
  46. MOVEQ.L #0,D2
  47. MOVEQ.L #0,D3
  48. MOVEQ.L #0,D4
  49. MOVEQ.L #0,D5
  50. MOVEQ.L #0,D6
  51. MOVE.L D0,A1
  52. LEA.L BACK1_BUFFER+800H(A5),A0
  53. MOVE.W #800H/(32*8)-1,D7
  54. B1_INIT_LOOP:
  55. MOVEM.L D0-D6/A1,-(A0)
  56. MOVEM.L D0-D6/A1,-(A0)
  57. MOVEM.L D0-D6/A1,-(A0)
  58. MOVEM.L D0-D6/A1,-(A0)
  59. MOVEM.L D0-D6/A1,-(A0)
  60. MOVEM.L D0-D6/A1,-(A0)
  61. MOVEM.L D0-D6/A1,-(A0)
  62. MOVEM.L D0-D6/A1,-(A0)
  63. DBRA D7,B1_INIT_LOOP
  64. RTS
  65. ;
  66. ; *receive_resista:A1(back1_adrs)
  67. ; :D3(set_data.byte)
  68. ; :D5(x_size.word)
  69. ; :D6(y_size.word)
  70. BACK1_DATA_SET:
  71. MOVE.L A1,A2
  72. MOVE.W D5,D7
  73. B1_SET_LOOP1:
  74. MOVE.B D3,(A2)+
  75. DBRA D7,B1_SET_LOOP1
  76. ADDA.W #32,A1
  77. DBRA D6,BACK1_DATA_SET
  78. RTS
  79. ;***********************************************************************
  80. ;
  81. ; * Logical operation program
  82. ;
  83. ; DUMMY_CHARACTER etc. version 1.02*10^-9
  84. ; presented by k.morikawa
  85. LM_AHO:
  86. JSR CHECK_MSB(PC)
  87. MOVE.L VX(A6),D0
  88. ADD.L D0,X_POSITION(A6)
  89. ANDI.W #400H-1,X_POSITION(A6) ;4 screen adrs(vartual)
  90. RTS
  91. ;************************************************************************
  92. ;
  93. ; HAKO_operation program
  94. ; version 1.0*10^-9
  95. ; date 1991/11/18
  96. ;
  97. LM_HAKO:
  98. JSR CHECK_MSB(PC)
  99. MOVE.B WORK_N0(A6),(A5)
  100. MOVE.W (A5),D0
  101. LEA.L 0(A5,D0.W),A3
  102. MOVE.B BREAK_FLAG(A6),D0
  103. BEQ.S LM_HAKO_1
  104. LEA.L HERO1(A5),A0
  105. BTST.B #BHS_DAMAGE,HERO_STATE(A0)
  106. BNE.S LM_HAKO_2
  107. LEA.L HERO2(A5),A0
  108. BTST.B #BHS_DAMAGE,HERO_STATE(A0)
  109. BEQ.S LM_HAKO_1
  110. LM_HAKO_2:
  111. MOVE.W #C_B_HAKO,ACT_No(A3)
  112. MOVE.B #1,MASTER_REQUEST(A3)
  113. JSR BOMB_INIT(PC)
  114. LM_HAKO_1:
  115. MOVE.W STEP1(A6),D0
  116. ADD.W D0,D0
  117. ADD.W D0,D0
  118. MOVE.L LM_H_TBL(PC,D0.W),A0
  119. JMP (A0)
  120. ; ***************************
  121. LM_H_TBL:
  122. DC.L LM_H_INIT ;00
  123. DC.L LM_H_STOP ;01
  124. DC.L LM_H_FALL ;02
  125. DC.L LM_H_SET ;03
  126. ; ***************************
  127. ;************************************************************************
  128. ;
  129. ; step 0
  130. ;
  131. LM_H_INIT:
  132. JSR SET_HIT_AREA(PC)
  133. MOVE.L VZ(A6),D0
  134. BEQ.S LM_I_1
  135. MOVE.L VZ(A6),VZ_INIT(A6)
  136. MOVE.W #2,STEP1(A6)
  137. LM_I_1:
  138. ADDQ.W #1,STEP1(A6)
  139. RTS
  140. ;************************************************************************
  141. ;
  142. ; step 1
  143. ;
  144. LM_H_STOP:
  145. MOVE.W Z_POSITION(A6),D0
  146. BMI.S LM_SP_3
  147. BEQ.S LM_SP_1
  148. JSR OBJ_CHECK(PC)
  149. BNE.S LM_SP_1
  150. MOVE.W #3,STEP1(A6)
  151. LM_SP_1:
  152. RTS
  153. LM_SP_3:
  154. MOVE.L #0,Z_POSITION(A6)
  155. RTS
  156. ;************************************************************************
  157. ;
  158. ; step 2
  159. ;
  160. LM_H_FALL:
  161. MOVE.L Z_POSITION(A6),D0
  162. ADD.L VZ(A6),D0
  163. BPL.S LM_F_1
  164. MOVE.L #0,Z_POSITION(A6)
  165. JMP LM_F_4
  166. LM_F_1:
  167. MOVE.L D0,Z_POSITION(A6)
  168. JSR OBJ_CHECK(PC)
  169. BNE.L LM_F_4
  170. ADD.L #-8000H,VZ(A6)
  171. RTS
  172. LM_F_4:
  173. MOVE.L #0,VZ(A3)
  174. MOVE.L #0,VZ(A6)
  175. SUBQ.W #1,STEP1(A6)
  176. RTS
  177. ;************************************************************************
  178. ;
  179. ; step 3
  180. ;
  181. LM_H_SET:
  182. MOVE.L VZ_INIT(A6),VZ(A6)
  183. MOVE.W #2,STEP1(A6)
  184. RTS
  185. ;************************************************************************
  186. ;
  187. ; object_down_line check_prog
  188. ; presented by k.m 1991/11/18
  189. ;
  190. OBJ_CHECK:
  191. LEA.L (A3),A0
  192. JSR GET_OBJ_BACK_ADRS(PC)
  193. SUBA.L #1,A1
  194. MOVEQ.L #0,D0
  195. MOVE.B WORK_N0(A6),D0
  196. BK_LOOP:
  197. TST.B (A1)
  198. BEQ.S BK_CHK_3
  199. CMP.B (A1),D0
  200. BNE.S BK_CHK_2
  201. BK_CHK_3:
  202. ADDA.W #32,A1
  203. DBRA D6,BK_LOOP
  204. BK_CHK_1:
  205. MOVEQ.L #0,D0
  206. RTS
  207. BK_CHK_2:
  208. MOVEQ.L #6FH,D0
  209. RTS
  210. ;************************************************************************
  211. ;
  212. ; HAHEN_operation 1991/10/29
  213. ;
  214. LM_HAHEN:
  215. JSR CHECK_MSB(PC)
  216. MOVE.W Y_POSITION(A6),D0
  217. ADD.W Z_POSITION(A6),D0
  218. MOVE.W GROUND_LINE(A6),D1
  219. CMP.W D0,D1
  220. BLT LM_H_1
  221. BNE LM_H_2
  222. SUB.B #1,Z_CNT(A6)
  223. BMI LM_HB_END
  224. MOVE.L VZ(A6),D0
  225. NEG.L D0
  226. MOVE.L D0,D1
  227. LSR.L #1,D0
  228. LSR.L #3,D1
  229. ADD.L D1,D0
  230. MOVE.L D0,VZ(A6) ;vz=vz*0.625
  231. LM_H_1:
  232. MOVE.L VX(A6),D0
  233. ADD.L D0,X_POSITION(A6)
  234. MOVE.L VZ(A6),D0
  235. ADD.L D0,Z_POSITION(A6)
  236. SUB.L #0A800H,D0
  237. MOVE.L D0,VZ(A6)
  238. RTS
  239. LM_H_2:
  240. MOVE.W D1,Z_POSITION(A6)
  241. RTS
  242. LM_HB_END:
  243. MOVE.W #0,TYPE(A6)
  244. RTS
  245. ;
  246. ;************************************************************************
  247. XDEF LM_KUBIFURI
  248. ;
  249. ;
  250. ;
  251. LM_KUBIFURI:
  252. JSR CHECK_MSB(PC)
  253. MOVE.B WORK_N0(A6),(A5)
  254. MOVE.W (A5),D0
  255. LEA.L 0(A5,D0.W),A3
  256. TST.W STEP1(A6)
  257. BNE.S ACT_MAIN
  258. LEA.L JB_BUFFER(A6),A0
  259. MOVE.L D0,(A0)+
  260. MOVE.L D0,(A0)+
  261. MOVE.L D0,(A0)+
  262. JSR INIT_JOB_SET(PC)
  263. MOVE.W #1,STEP1(A6)
  264. ACT_MAIN:
  265. LEA.L JB_BUFFER(A6),A4
  266. JOB_OPERATION:
  267. MOVE.W JB_POINTER(A6),D0
  268. EORI.W #3,D0
  269. MOVE.B 0(A4,D0.W),D0
  270. ADD.W D0,D0
  271. ADD.W D0,D0
  272. MOVE.L ACTION_PROG(PC,D0.W),A0
  273. JSR (A0)
  274. SUB.W #1,JB_POINTER(A6)
  275. BNE.S JOB_OPERATION
  276. MOVE.W #3,JB_POINTER(A6)
  277. RTS
  278. ACTION_PROG:
  279. DC.L JOB_RETURN ;0
  280. ;job no.1 command_wait
  281. DC.L WAIT_JOB ;1
  282. ;job no.2
  283. DC.L CHECK_DIRECTION ;2
  284. ;job no.3
  285. DC.L CHARACTER_SET 3
  286. JOB_RETURN:
  287. RTS
  288. ; ********************
  289. ; job macro
  290. ;
  291. JOB_WAIT_SET MACRO
  292. MOVE.B #1,0(A4)
  293. ENDM
  294. JOB_WAIT_CLEAR MACRO
  295. MOVE.B #0,0(A4)
  296. ENDM
  297. JOB_CHK_SET MACRO
  298. MOVE.B #2,1(A4)
  299. ENDM
  300. JOB_CHK_CLEAR MACRO
  301. MOVE.B #0,1(A4)
  302. ENDM
  303. JOB_CHR_SET MACRO
  304. MOVE.B #3,2(A4)
  305. ENDM
  306. JOB_CHR_CLEAR MACRO
  307. MOVE.B #0,2(A4)
  308. ENDM
  309. JOB_CLEAR MACRO
  310. MOVE.W JB_POINTER(A6),D0
  311. EORI.W #3,D0
  312. MOVE.B #0,0(A4,D0.W)
  313. ENDM
  314. ; ********************
  315. WAIT_JOB:
  316. TST.B WAIT_TIMER(A6)
  317. BEQ.S WAIT_JOB_END
  318. SUB.B #1,WAIT_TIMER(A6)
  319. RTS
  320. WAIT_JOB_END:
  321. JOB_CHK_SET
  322. JOB_CLEAR
  323. RTS
  324. CHECK_DIRECTION:
  325. ; LEA.L HERO1(A5),A0
  326. ; LEA.L HERO2(A5),A1
  327. ;
  328. ; MOVEQ.L #0EH,D0
  329. ; MOVE.W D0,D1
  330. ; EORI.W ACT_CTRL(A0),D0
  331. ; BEQ.S DAMAGE_CHANGE
  332. ;
  333. ; MOVEQ.L #0,D1
  334. ; EORI.W ACT_CTRL(A1),D1
  335. ; BEQ.S DAMAGE_CHANGE
  336. ;
  337. ;DAMAGE_CHANGE:
  338. LEA.L HERO1(A5),A0
  339. MOVEQ.L #0,D0
  340. MOVE.B LOOK_PLAYER(A6),D0
  341. BEQ.S CHG_DIR_1
  342. LEA.L HERO2(A5),A0
  343. CHG_DIR_1:
  344. MOVE.W X_POSITION(A6),D0
  345. SUB.W X_POSITION(A0),D0
  346. ASR.W #4,D0
  347. MOVE.B POSITION_MAP(PC,D0.W),D0
  348. CMP.B LOOK_DIRECTION(A6),D0
  349. BEQ.S CHK_DIR_2
  350. MOVE.B D0,LOOK_DIRECTION(A6)
  351. JOB_CHR_SET
  352. JOB_CLEAR
  353. CHK_DIR_2:
  354. RTS
  355. POSITION_MIN:
  356. DC.B 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  357. DC.B 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  358. DC.B 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  359. DC.B 0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2
  360. POSITION_MAP:
  361. DC.B 2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4
  362. DC.B 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
  363. DC.B 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
  364. DC.B 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
  365. ;POSITION_MAX-1:
  366. CHARACTER_SET:
  367. MOVE.W GUNJIN_TYPE(A6),D0
  368. MOVE.W D0,D1
  369. MOVE.B WAIT_DATA(PC,D1.W),WAIT_TIMER(A6)
  370. JOB_WAIT_SET
  371. LSL.W #3,D0
  372. ADD.B LOOK_DIRECTION(A6),D0
  373. MOVE.W CHARA_DATA(PC,D0.W),ACT_No(A3)
  374. MOVE.B #1,MASTER_REQUEST(A3)
  375. JOB_CLEAR
  376. RTS
  377. CHARA_DATA:
  378. DC.W C_GJ1_RFACE,C_GJ1_FFACE,C_GJ1_LFACE,C_GJ1_LFACE
  379. DC.W C_GJ2_RFACE,C_GJ2_FFACE,C_GJ2_LFACE,C_GJ1_LFACE
  380. DC.W C_GJ3_RFACE,C_GJ3_FFACE,C_GJ3_LFACE,C_GJ1_LFACE
  381. DC.W C_MASTER_RFACE,C_MASTER_FFACE,C_MASTER_LFACE,C_MASTER_LFACE
  382. DC.W C_BOY_RFACE,C_BOY_FFACE,C_BOY_LFACE,C_BOY_LFACE
  383. DC.W C_HIGE_RFACE,C_HIGE_FFACE,C_HIGE_LFACE,C_HIGE_LFACE
  384. DC.W C_GIRL1_RFACE,C_GIRL1_FFACE,C_GIRL1_LFACE,C_GIRL1_LFACE
  385. WAIT_DATA:
  386. DC.B 8,9,7,8
  387. DC.B 8,8,8,8
  388. INIT_JOB_SET:
  389. MOVE.B VX(A6),LOOK_PLAYER(A6)
  390. MOVE.W VZ(A6),GUNJIN_TYPE(A6)
  391. MOVE.W GUNJIN_TYPE(A6),D0
  392. LSL.W #3,D0
  393. LEA.L INIT_JOB_DATA(PC),A0
  394. MOVE.L 0(A0,D0.W),JB_BUFFER+0(A6)
  395. MOVE.L 4(A0,D0.W),JB_BUFFER+4(A6)
  396. MOVE.W #3,JB_POINTER(A6)
  397. RTS
  398. INIT_JOB_DATA:
  399. DC.B 0,2,0,0,0,0,0,0
  400. DC.B 0,2,0,0,0,0,0,0
  401. DC.B 0,2,0,0,0,0,0,0
  402. DC.B 0,2,0,0,0,0,0,0
  403. DC.B 0,2,0,0,0,0,0,0
  404. DC.B 0,2,0,0,0,0,0,0
  405. DC.B 0,2,0,0,0,0,0,0
  406. DC.B 0,2,0,0,0,0,0,0
  407. DC.B 0,2,0,0,0,0,0,0
  408. DC.B 0,2,0,0,0,0,0,0
  409. ;************************************************************************
  410. ;
  411. ; * Physical operation program
  412. ;
  413. ; version 0.03*10^-9 1991/11/22
  414. ; aho_operation =>* act_flag not equal then non_action
  415. ; * action_dec is minus then non_action
  416. ; * step1 is (pm_hero) 1 then normal_chk
  417. ; if not equal then act_timer = minus
  418. ; * lever_get(???)
  419. ;
  420. ; * pm warning_comment => if SORT_SET is cut
  421. ; then move zero to SPRITE_POS(word)
  422. PM_AHO:
  423. JSR PM_CHECK1(PC)
  424. MOVE.W #-59H,D3
  425. MOVE.W #66H,D4
  426. JSR PM_CHECK2(PC)
  427. MOVE.L X_POSITION(A4),X_POSITION(A6)
  428. MOVE.L Y_POSITION(A4),Y_POSITION(A6)
  429. MOVE.L Z_POSITION(A4),Z_POSITION(A6)
  430. JSR.S SORT_SET
  431. JSR REDUCTION_MOVE(PC)
  432. JSR.S NEXT_ACTION
  433. RTS
  434. ;
  435. ; HAHEN_operation 1991/10/25
  436. ;
  437. PM_HAHEN:
  438. JSR PM_CHECK1(PC)
  439. TST.W TYPE(A4)
  440. BEQ.S PM_H_END
  441. JSR PM_CHECK2(PC)
  442. JSR.S SORT_SET
  443. MOVE.L X_POSITION(A4),X_POSITION(A6)
  444. MOVE.L Y_POSITION(A4),Y_POSITION(A6)
  445. MOVE.L Z_POSITION(A4),Z_POSITION(A6)
  446. JSR REDUCTION_MOVE(PC) ;from xy_size to sp_adrs_changes
  447. JSR.S NEXT_ACTION ;now_action_chk
  448. RTS
  449. PM_H_END:
  450. MOVE.W #0,TYPE(A6)
  451. RTS
  452. XDEF PM_KUBIFURI
  453. ;
  454. ; HAKO_operatrion 1991/10/29
  455. ;
  456. PM_KUBIFURI:
  457. PM_HAKO:
  458. JSR PM_CHECK1(PC)
  459. MOVE.W #-80H,D3
  460. MOVE.W #80H,D4
  461. JSR PM_CHECK2(PC)
  462. TST.B HIT_FLAG(A6)
  463. BPL PM_HAKO_1
  464. MOVE.B #0FFH,BREAK_FLAG(A4)
  465. MOVE.B #0,HIT_FLAG(A6)
  466. PM_HAKO_1:
  467. JSR.S SORT_SET
  468. MOVE.L X_POSITION(A4),X_POSITION(A6)
  469. MOVE.L Y_POSITION(A4),Y_POSITION(A6)
  470. MOVE.L Z_POSITION(A4),Z_POSITION(A6)
  471. JSR REDUCTION_MOVE(PC)
  472. JSR.S NEXT_ACTION
  473. JSR SET_HIT_AREA(PC)
  474. RTS
  475. ;************************************************************************
  476. PM_MAN:
  477. MOVE.W #-80H,D3
  478. MOVE.W #80H,D4
  479. ; MOVE.W #-6EH,D3
  480. ; MOVE.W #70H,D4
  481. JSR PM_CHECK2(PC)
  482. JSR.S SORT_SET
  483. JSR REDUCTION_MOVE(PC)
  484. JSR.S NEXT_ACTION
  485. RTS
  486. PM_F_TREE:
  487. JSR PM_CHECK1(PC)
  488. MOVE.W #-6EH,D3
  489. MOVE.W #70H,D4
  490. JSR PM_CHECK2(PC)
  491. BEQ.S PM_FT_1
  492. JSR.S SORT_SET
  493. PM_FT_1:
  494. JSR REDUCTION_MOVE(PC)
  495. JSR.S NEXT_ACTION
  496. RTS
  497. ;************************************************************************
  498. PM_CHECK1:
  499. BSET.B #ACTAT_KEEP,ACT_ATTR(A6)
  500. MOVE.B MASTER_No(A6),(A5)
  501. MOVE.W (A5),D0
  502. LEA.L -LOG(A5,D0.W),A4
  503. TST.B MASTER_REQUEST(A6)
  504. BEQ.S PM_CHK1_1
  505. CLR.B MASTER_REQUEST(A6)
  506. MOVE.W ACT_No(A6),D0
  507. JSR.S ACTION_SET
  508. PM_CHK1_1:
  509. RTS
  510. ;
  511. ; receive_resista:D3
  512. ; D4
  513. PM_CHECK2:
  514. MOVE.W X_POSITION(A6),D0
  515. MOVE.W D0,D1
  516. SUB.W BACK2+Wx(A5),D0
  517. BLT.S PM_CHK2_1
  518. SUB.W BACK2+WxRIGHT(A5),D1
  519. CMP.W D4,D1
  520. BGE.S PM_CHK2_3
  521. BCLR.B #ACTAT_CUT,ACT_ATTR(A6)
  522. BCLR.B #ACTAT_KEEP,ACT_ATTR(A6)
  523. MOVEQ.L #-1,D0
  524. RTS
  525. PM_CHK2_1:
  526. BSET.B #ACTAT_CUT,ACT_ATTR(A6)
  527. BCLR.B #ACTAT_KEEP,ACT_ATTR(A6)
  528. CMP.W D3,D0
  529. BGE.S PM_CHK2_2
  530. BCLR.B #ACTAT_CUT,ACT_ATTR(A6)
  531. BSET.B #ACTAT_KEEP,ACT_ATTR(A6)
  532. PM_CHK2_2:
  533. MOVEQ.L #0,D0
  534. RTS
  535. PM_CHK2_3:
  536. BSET.B #ACTAT_CUT,ACT_ATTR(A6)
  537. BCLR.B #ACTAT_KEEP,ACT_ATTR(A6)
  538. CMP.W D4,D0
  539. BLT.S PM_CHK2_4
  540. BCLR.B #ACTAT_CUT,ACT_ATTR(A6)
  541. BSET.B #ACTAT_KEEP,ACT_ATTR(A6)
  542. PM_CHK2_4:
  543. MOVEQ.L #0,D0
  544. RTS
  545. ;************************************************************************
  546. ;
  547. ;
  548. ; character_expolse_initialize 1991/10/29
  549. ;
  550. BOMB_INIT:
  551. MOVE.B #0,BREAK_FLAG(A6)
  552. MOVE.B #0,SETTING_CNT(A6)
  553. MOVE.W AREA_No(A5),D6
  554. SUBQ.W #1,D6
  555. ADD.W D6,D6
  556. ADD.W D6,D6
  557. LEA.L B_HAKO_TBL(PC),A2
  558. MOVE.L 0(A2,D6.W),A2
  559. LEA.L BTYPE_TBL(PC),A4
  560. MOVE.L 0(A4,D6.W),A4
  561. MOVEQ.L #0,D6
  562. BOMB_LOOP:
  563. MOVE.W (A2)+,D1 ;1
  564. BEQ BOMB_END
  565. JSR FRONT_DATA_SET(PC)
  566. JSR (A4)
  567. MOVE.W X_POSITION(A6),D0
  568. ADD.W D0,X_POSITION(A1)
  569. MOVE.W Z_POSITION(A6),D0
  570. ADD.W D0,Z_POSITION(A1)
  571. JMP BOMB_LOOP(PC)
  572. BOMB_END:
  573. RTS
  574. BTYPE_TBL:
  575. DC.L KANBAN_SET ;00
  576. DC.L TOBICHIRI_SET ;01
  577. DC.L NON_OPE ;02
  578. DC.L NON_OPE ;03
  579. DC.L NON_OPE ;04
  580. DC.L NON_OPE ;05
  581. DC.L NON_OPE ;06
  582. DC.L NON_OPE ;07
  583. DC.L NON_OPE ;08
  584. DC.L NON_OPE ;09
  585. DC.L NON_OPE ;10
  586. DC.L NON_OPE ;11
  587. DC.L NON_OPE ;12
  588. KANBAN_SET:
  589. LEA.L KANBAN_DATA(PC),A0
  590. MOVEQ.L #0,D0
  591. MOVE.B SETTING_CNT(A6),D0
  592. ADD.W D0,D0
  593. ADD.W D0,D0
  594. ADD.W D0,D0
  595. MOVE.L 0(A0,D0.W),VX(A1)
  596. MOVE.L 4(A0,D0.W),VZ(A1)
  597. MOVE.B #3-1,Z_CNT(A1)
  598. MOVE.W #GL+24,GROUND_LINE(A1)
  599. ADD.B #1,SETTING_CNT(A6)
  600. RTS
  601. TOBICHIRI_SET:
  602. LEA.L EPR_HAKO1(PC),A0
  603. JSR.S RAND8 ;randum(0-255=>D0,byte)
  604. ANDI.B #1FH,D0
  605. MOVE.B D0,D1
  606. MULU #8,D0
  607. MOVE.L 0(A0,D0.W),VX(A1)
  608. MOVE.L 4(A0,D0.W),VZ(A1)
  609. MOVE.W #GL-30H,GROUND_LINE(A1)
  610. MOVE.B #0,Z_CNT(A1)
  611. NON_OPE:
  612. RTS
  613. ;************************************************************************
  614. ;
  615. ; back_object action_character data_setting program
  616. ; presented by k.m 1991/10/17
  617. ; version 1.2*10^-9 1991/10/28
  618. ; version 0.08 1992/5/21
  619. ;
  620. ; *warning_comment
  621. ; if this character is break or type_changes
  622. ; then from lm_operation to call BKCI_LOOP
  623. ; but next_parameter_setting
  624. ; *AREA_NO,BK_OBJ_TABLE,use_data_table_address
  625. ;
  626. BK_CHR_INIT:
  627. MOVE.W AREA_No(A5),D6
  628. SUBQ.W #1,D6
  629. ADD.W D6,D6
  630. ADD.W D6,D6
  631. LEA.L BK_OBJ2_DATA,A2
  632. MOVE.L 0(A2,D6.W),A2
  633. BKCI_LOOP:
  634. MOVE.W (A2)+,D1 ;2
  635. BEQ BKCI_END
  636. JSR FRONT_DATA_SET(PC)
  637. MOVE.L (A2)+,VX(A1) ;18
  638. MOVE.L (A2)+,VZ(A1) ;22
  639. MOVE.B (A2)+,HIT_ACTIVE(A0) ;23
  640. MOVE.B (A2)+,HIT_PASSIVE(A0);24
  641. MOVE.B (A2),HIT_FLAG(A0)
  642. ADDA.W #2,A2
  643. MOVE.B #0,BREAK_FLAG(A1)
  644. BRA BKCI_LOOP
  645. BKCI_END:
  646. RTS
  647. ;************************************************************************
  648. ;
  649. ; *recieve_resista :D1 (system_label)
  650. ;
  651. FRONT_DATA_SET:
  652. JSR.S FREE_LWORK
  653. MOVEQ.L #0,D0
  654. MOVE.W D0,STEP1(A0)
  655. MOVE.L D0,X_POSITION(A0)
  656. MOVE.L D0,Y_POSITION(A0)
  657. MOVE.L D0,Z_POSITION(A0)
  658. MOVE.W D1,TYPE(A0)
  659. MOVE.W (A2)+,X_POSITION(A0);4
  660. MOVE.W (A2)+,Y_POSITION(A0);6
  661. MOVE.W (A2)+,Z_POSITION(A0);8
  662. MOVE.L A0,A1
  663. JSR FREE_OBJ_WORK(PC) ;get free_work_address
  664. MOVE.L (A2)+,D2 ;type & act_no set
  665. MOVE.W (A2)+,D5 ;priority set
  666. MOVEQ.L #0,D3
  667. MOVEQ.L #0,D4
  668. JSR.S PWORK_SET
  669. BSET.B #ACTAT_ERACE,ACT_ATTR(A0)
  670. ;A0 = physical
  671. ;A1 = logical
  672. MOVE.B WORK_No(A1),MASTER_No(A0)
  673. MOVE.B WORK_No(A0),WORK_N0(A1)
  674. RTS
  675. ;************************************************************************
  676. ;
  677. ; back & fornt object set program
  678. ; 1991/10/11 presented by K.M
  679. ;
  680. ; * operation : work_area_set(FREE_PWORK)
  681. ; : read_data(from data_table)
  682. ; : x_y_pos & priority workset
  683. ; *priority :obj1 => 0~63(0~5FH)
  684. ; obj2 => 0~79(0~8FH)
  685. ; obj3 => 0~28(0~1CH)
  686. ; obj4 => 0~32(0~20H)
  687. ; *WARINING => this priority is
  688. ; object_number > priority
  689. ;
  690. ; : physical_work_set(PWORK_SET)
  691. ; : special_data setting
  692. ; : character_erace_bit_set
  693. ; : if object_no = 0 then operation_end
  694. ;
  695. ; *receive_resista: A1(back_object_data top_address)
  696. ;
  697. BK_OBJECT_SET:
  698. MOVE.W AREA_No(A5),D0
  699. SUBQ.W #1,D0
  700. ADD.W D0,D0
  701. ADD.W D0,D0
  702. LEA.L BK_OBJ1_DATA,A1
  703. MOVE.L 0(A1,D0.W),A1
  704. BK_SET_LOOP:
  705. JSR FREE_OBJ_WORK(PC)
  706. TST.W (A1)
  707. BEQ.L BK_SET_END
  708. MOVE.L (A1)+,D2 ;type & act_no set
  709. MOVE.W (A1)+,D5 ;priority set
  710. MOVE.W (A1)+,D3 ;x_position set
  711. MOVE.W (A1)+,D4 ;y_position set
  712. JSR.S PWORK_SET
  713. BSET.B #ACTAT_ERACE,ACT_ATTR(A0)
  714. JMP BK_SET_LOOP
  715. BK_SET_END
  716. RTS
  717. ;************************************************************************
  718. INCLUDE WORK.INC
  719. ;************************************************************************
  720.