EASY.SRC 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. ************************************************************************
  2. * *
  3. * [[[ NOP ]]] SYSTEM EASY LOGIC ROUTINE *
  4. * by S.OKADA from 91/12/25 Wed 09:52 *
  5. * *
  6. ************************************************************************
  7. XDEF COLOR_COM_SET
  8. XDEF GEN_PCHILD,GEN_LCHILD
  9. XDEF INIT_MONO_SET,MONO_SET
  10. XDEF BASE_MONO_SET
  11. XREF ?A5
  12. SECT GAME,,C
  13. ; SECT.S SYS,,C
  14. INCLUDE SYS.INC
  15. INCLUDE NEO_GEO.INC
  16. INCLUDE LABEL.INC
  17. INCLUDE MACRO.INC
  18. ;
  19. ;
  20. ; *** system easy logic sub routines ***
  21. ;
  22. ;
  23. GEN_PCHILD:
  24. MOVE.L (SP)+,A1
  25. BSR FREE_PWORKE
  26. BEQ GEN_PCHILD_1
  27. MOVE.W (A1),D2
  28. MOVE.B WORK_No(A0),0(A6,D2.W)
  29. MOVE.L 2(A1),D2
  30. MOVE.W 6(A1),D3
  31. MOVE.W 8(A1),D4
  32. MOVE.W 10(A1),D5
  33. JSR.S PWORK_SET
  34. MOVEQ.L #01111111B,D0
  35. AND.B PHASE+1(A5),D0
  36. MOVE.B D0,MASTER_No(A0)
  37. MOVE.L 12(A1),ADRS1(A0)
  38. GEN_PCHILD_1:
  39. LEA.L 16(A1),A1
  40. JMP (A1)
  41. ;
  42. ; フリーのワークを見つける
  43. ;
  44. FREE_PWORKE:
  45. LEA.L PWORK_START+2000H(A5),A0
  46. MOVEQ.L #64-1,D0
  47. FREE_WORK_1:
  48. TST.W TYPE(A0)
  49. BEQ FREE_WORK_2
  50. LEA.L 100H(A0),A0
  51. DBRA D0,FREE_WORK_1
  52. FREE_WORK_2:
  53. ADDQ.W #1,D0
  54. RTS
  55. GEN_LCHILD:
  56. MOVE.L (SP)+,A1
  57. JSR.S AFTER_FREE_WORK
  58. BEQ.S GEN_LCHILD_1
  59. MOVE.W (A1),D2
  60. MOVE.B WORK_No(A0),0(A6,D2.W)
  61. MOVE.W 2(A1),TYPE(A0)
  62. MOVE.L 4(A1),ADRS1(A0)
  63. MOVEQ.L #01111111B,D0
  64. AND.B PHASE+1(A5),D0
  65. MOVE.B D0,MASTER_No(A0)
  66. CLR.B STEP1(A0)
  67. GEN_LCHILD_1:
  68. ADDQ.W #8,A1
  69. JMP (A1)
  70. COLOR_COM_SET:
  71. ; color command set
  72. ; in) return address = command data top address
  73. ; command data format
  74. ; (set palette No)*200H,color coomand
  75. ; ................
  76. ; -1,(true return address)
  77. MOVEM.L A0-A1,-(SP)
  78. MOVE.L 8(SP),A1
  79. LEA.L COLOR_BUFFER(A5),A0
  80. COLOR_COM_SET_1:
  81. MOVE.W (A1)+,D0
  82. BMI.S COLOR_COM_SET_2
  83. MOVE.W (A1)+,0(A0,D0.W)
  84. BRA.S COLOR_COM_SET_1
  85. COLOR_COM_SET_2:
  86. MOVE.B #1,COLOR_STATE(A5)
  87. MOVE.L A1,8(SP)
  88. MOVEM.L (SP)+,A0-A1
  89. RTS
  90. INIT_MONO_SET:
  91. ; in) REG_D0 tagert RGB max,min(6 word)
  92. ; BYTE_FLAG+80H start palette
  93. ; BYTE_FLAG+82H palette count
  94. ; BYTE_FLAG+84H speed
  95. BSR TARGET_GRADE_SET
  96. CLR.W BYTE_FLAG+86H(A5)
  97. RTS
  98. TARGET_GRADE_SET:
  99. MOVEQ.L #0,D0
  100. MOVEQ.L #0,D1
  101. MOVEQ.L #0,D2
  102. MOVE.W REG_D0+0(A5),D0
  103. MOVE.W REG_D0+2(A5),D1
  104. MOVE.W REG_D0+4(A5),D2
  105. MOVE.W REG_D0+6(A5),D3
  106. MOVE.W REG_D0+8(A5),D4
  107. MOVE.W REG_D0+10(A5),D5
  108. SUB.W D3,D0
  109. SUB.W D4,D1
  110. SUB.W D5,D2
  111. MOVEQ.L #3+8,D6
  112. LSL.L D6,D0
  113. LSL.L D6,D1
  114. LSL.L D6,D2
  115. LEA.L BYTE_FLAG(A5),A0
  116. MOVEQ.L #32-1,D7
  117. TGS_1:
  118. MOVE.B D3,0(A0)
  119. MOVE.B D4,1(A0)
  120. MOVE.B D5,2(A0)
  121. SWAP D3
  122. SWAP D4
  123. SWAP D5
  124. ADD.L D0,D3
  125. ADD.L D1,D4
  126. ADD.L D2,D5
  127. SWAP D3
  128. SWAP D4
  129. SWAP D5
  130. ADDQ.W #4,A0
  131. DBRA D7,TGS_1
  132. RTS
  133. MONO_TO_BG:
  134. ADDQ.W #2,A0
  135. MOVEQ.L #15-1,D6
  136. MONO_TO_BG_1:
  137. MOVE.W -2000H(A0),(A0)+
  138. DBRA D6,MONO_TO_BG_1
  139. SUBQ.W #1,REG_D7(A5)
  140. BNE MONO_TO_BG
  141. MOVE.W BYTE_FLAG+84H(A5),D0
  142. ADD.W #100H,D0
  143. MOVE.W D0,BYTE_FLAG+86H(A5)
  144. RTS
  145. BASE_MONO_SET:
  146. BSR TARGET_GRADE_SET
  147. LEA.L COLOR_BUFFER(A5),A0
  148. MOVE.W BYTE_FLAG+80H(A5),D0
  149. LSL.W #5,D0
  150. LEA.L 0(A0,D0.W),A0
  151. LEA.L MONO_DATA(PC),A2
  152. LEA.L R_TYPE+64,A3
  153. LEA.L BYTE_FLAG(A5),A4
  154. MOVE.W BYTE_FLAG+82H(A5),REG_D7(A5)
  155. BASE_MONO_SET_1:
  156. ADDQ.W #2,A0
  157. MOVE.W #15,REG_D6(A5)
  158. BASE_MONO_SET_2:
  159. MOVEQ.L #0FH,D2
  160. AND.B (A0),D2
  161. MOVE.W (A0),D1
  162. MOVE.W D1,D3
  163. MOVEQ.L #0FH,D4
  164. AND.W D3,D4
  165. ADD.W D1,D1
  166. ADD.W D1,D1
  167. ADDX.B D2,D2 R
  168. LSR.B #4,D3
  169. AND.W #0FH,D3
  170. ADD.W D1,D1
  171. ADDX.B D3,D3 G
  172. ADD.W D1,D1
  173. ADDX.B D4,D4 B
  174. MOVE.W D2,D5
  175. ADD.W D4,D5
  176. ADD.W D3,D5
  177. MOVE.B 0(A2,D5.W),D5
  178. MOVEQ.L #0,D2
  179. MOVEQ.L #0,D3
  180. MOVEQ.L #0,D4
  181. MOVE.B 0(A4,D5.W),D2
  182. MOVE.B 1(A4,D5.W),D3
  183. MOVE.B 2(A4,D5.W),D4
  184. ADD.W D2,D2
  185. ADD.W D3,D3
  186. ADD.W D4,D4
  187. MOVE.W -64(A3,D2.W),D1
  188. OR.W 000(A3,D3.W),D1
  189. OR.W 064(A3,D4.W),D1
  190. MOVE.W D1,(A0)+
  191. SUBQ.W #1,REG_D6(A5)
  192. BNE BASE_MONO_SET_2
  193. SUBQ.W #1,REG_D7(A5)
  194. BNE BASE_MONO_SET_1
  195. RTS
  196. MONO_SET:
  197. LEA.L COLOR_BUFFER(A5),A0
  198. MOVE.W BYTE_FLAG+80H(A5),D0
  199. LSL.W #5,D0
  200. LEA.L 0(A0,D0.W),A0
  201. LEA.L MONO_DATA(PC),A2
  202. LEA.L R_TYPE+64,A3
  203. LEA.L BYTE_FLAG(A5),A4
  204. MOVE.W BYTE_FLAG+82H(A5),REG_D7(A5)
  205. MOVE.W BYTE_FLAG+86H(A5),D6
  206. CMP.W #100H,D6
  207. BEQ MONO_TO_BG
  208. BCC MONO_SET_3
  209. MONO_SET_1:
  210. ADDQ.W #2,A0
  211. MOVE.W #15,REG_D6(A5)
  212. MONO_SET_2:
  213. MOVEQ.L #0FH,D2
  214. AND.B (A0),D2
  215. MOVE.W (A0)+,D1
  216. MOVE.W D1,D3
  217. MOVEQ.L #0FH,D4
  218. AND.W D3,D4
  219. ADD.W D1,D1
  220. ADD.W D1,D1
  221. ADDX.B D2,D2 R
  222. LSR.B #4,D3
  223. AND.W #0FH,D3
  224. ADD.W D1,D1
  225. ADDX.B D3,D3 G
  226. ADD.W D1,D1
  227. ADDX.B D4,D4 B
  228. MOVE.W D2,D5
  229. ADD.W D4,D5
  230. ADD.W D3,D5
  231. MOVE.B MONO_DATA(PC,D5.W),D5
  232. MOVEQ.L #0,D0
  233. MOVE.B 0(A4,D5.W),D0
  234. SUB.W D2,D0
  235. MOVE.B D0,(A5)
  236. MOVE.W (A5),D0
  237. MULS D6,D0
  238. SWAP D0
  239. ADD.W D0,D2
  240. MOVE.B 1(A4,D5.W),D0
  241. SUB.W D3,D0
  242. MOVE.B D0,(A5)
  243. MOVE.W (A5),D0
  244. MULS D6,D0
  245. SWAP D0
  246. ADD.W D0,D3
  247. MOVE.B 2(A4,D5.W),D0
  248. SUB.W D4,D0
  249. MOVE.B D0,(A5)
  250. MOVE.W (A5),D0
  251. MULS D6,D0
  252. SWAP D0
  253. ADD.W D0,D4
  254. ADD.W D2,D2
  255. ADD.W D3,D3
  256. ADD.W D4,D4
  257. MOVE.W -64(A3,D2.W),D1 14
  258. OR.W 000(A3,D3.W),D1 14
  259. OR.W 064(A3,D4.W),D1 14
  260. MOVE.W D1,-2002H(A0)
  261. SUBQ.W #1,REG_D6(A5)
  262. BNE MONO_SET_2
  263. MOVE.L A0,D5
  264. SUB.W #2020H,D5
  265. AND.W #0FE00H,D5
  266. MOVE.L D5,A1
  267. MOVE.W #1,(A1)
  268. SUBQ.W #1,REG_D7(A5)
  269. BNE MONO_SET_1
  270. MOVE.W BYTE_FLAG+84H(A5),D0
  271. ADD.W D0,D6
  272. MOVE.W D6,BYTE_FLAG+86H(A5)
  273. MONO_SET_3:
  274. RTS
  275. MONO MACRO TOTAL
  276. DC.B (TOTAL/3)*4
  277. ENDM
  278. MONO_DATA:
  279. MONO 00H
  280. MONO 01H
  281. MONO 02H
  282. MONO 03H
  283. MONO 04H
  284. MONO 05H
  285. MONO 06H
  286. MONO 07H
  287. MONO 08H
  288. MONO 09H
  289. MONO 0AH
  290. MONO 0BH
  291. MONO 0CH
  292. MONO 0DH
  293. MONO 0EH
  294. MONO 0FH
  295. MONO 10H
  296. MONO 11H
  297. MONO 12H
  298. MONO 13H
  299. MONO 14H
  300. MONO 15H
  301. MONO 16H
  302. MONO 17H
  303. MONO 18H
  304. MONO 19H
  305. MONO 1AH
  306. MONO 1BH
  307. MONO 1CH
  308. MONO 1DH
  309. MONO 1EH
  310. MONO 1FH
  311. MONO 20H
  312. MONO 21H
  313. MONO 22H
  314. MONO 23H
  315. MONO 24H
  316. MONO 25H
  317. MONO 26H
  318. MONO 27H
  319. MONO 28H
  320. MONO 29H
  321. MONO 2AH
  322. MONO 2BH
  323. MONO 2CH
  324. MONO 2DH
  325. MONO 2EH
  326. MONO 2FH
  327. MONO 30H
  328. MONO 31H
  329. MONO 32H
  330. MONO 33H
  331. MONO 34H
  332. MONO 35H
  333. MONO 36H
  334. MONO 37H
  335. MONO 38H
  336. MONO 39H
  337. MONO 3AH
  338. MONO 3BH
  339. MONO 3CH
  340. MONO 3DH
  341. MONO 3EH
  342. MONO 3FH
  343. MONO 40H
  344. MONO 41H
  345. MONO 42H
  346. MONO 43H
  347. MONO 44H
  348. MONO 45H
  349. MONO 46H
  350. MONO 47H
  351. MONO 48H
  352. MONO 49H
  353. MONO 4AH
  354. MONO 4BH
  355. MONO 4CH
  356. MONO 4DH
  357. MONO 4EH
  358. MONO 4FH
  359. MONO 50H
  360. MONO 51H
  361. MONO 52H
  362. MONO 53H
  363. MONO 54H
  364. MONO 55H
  365. MONO 56H
  366. MONO 57H
  367. MONO 58H
  368. MONO 59H
  369. MONO 5AH
  370. MONO 5BH
  371. MONO 5CH
  372. MONO 5DH
  373. MONO 5EH
  374. MONO 5FH
  375. INCLUDE WORK.INC