Guest User

Untitled

a guest
Jan 12th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.93 KB | None | 0 0
  1. ; =============== S U B R O U T I N E =======================================
  2.  
  3.  
  4. Obj_GarciaDonovan: ; DATA XREF: ROM:Obj_Enemyo
  5. ; ROM:00021C0Eo
  6. move.w ObjMode(a0),d0
  7. add.w d0,d0
  8. movea.l loc_2503C+2(pc,d0.w),a1
  9. jsr (a1)
  10. jsr (Update_SpriteData).l
  11. btst #0,ObjStatus4(a0) ; BIT 7 10000000 - 80
  12. ; BIT 6 01000000 - 40
  13. ; BIT 5 00100000 - 20
  14. ; BIT 4 00010000 - 10
  15. ; BIT 3 00001000 - 8
  16. ; BIT 2 00000100 - 4
  17. ; BIT 1 00000010 - 2
  18. ; BIT 0 00000001 - 1 Enable Weapon
  19. bne.s loc_2503C
  20. rts
  21. ; ---------------------------------------------------------------------------
  22.  
  23. loc_2503C: ; CODE XREF: Obj_GarciaDonovan+18j
  24. jmp Obj_WeaponMovement
  25. ; End of function Obj_GarciaDonovan
  26.  
  27. ; ---------------------------------------------------------------------------
  28. dc.l Obj_GarciaDonovanMove ; 2
  29. dc.l Enemy_Hit ; 4
  30. dc.l Enemy_Death ; 6
  31. dc.l Enemy_Disappear ; 8
  32. dc.l Enemy_Knockout ; A
  33. dc.l Enemy_ForwardGrab ; C
  34. dc.l Enemy_BackwardGrab ; E
  35. dc.l Enemy_ForwardThrow ; 10
  36. dc.l Enemy_BackwardThrow ; 12
  37. dc.l Obj_LoadGarciaData ; 14
  38. dc.l sub_22D38 ; 16
  39. dc.l sub_25C70 ; 18
  40. dc.l Enemy_Attack ; 1A
  41. dc.l Enemy_Attack ; 1C
  42. dc.l sub_250BA ; 1E
  43. dc.l Enemy_Attack ; 20
  44. dc.l Enemy_BGEntrance ; 22
  45. dc.l EnemyWeapon ; 24
  46. dc.l sub_25C2A ; 26
  47. dc.l sub_26024 ; 28
  48. dc.l sub_2607E ; 2A
  49. dc.l sub_260E4 ; 2C
  50. dc.l Obj_GarciaDwightElbowDrop ; 2E
  51. dc.l Enemy_Attack ; 30
  52. dc.l Obj_GarciaDwightGrab ; 32
  53. dc.l sub_25D0C ; 34
  54. dc.l sub_25DBE ; 36
  55. dc.l sub_25EC8 ; 38
  56. dc.l sub_25FBE ; 3A
  57. dc.l sub_22CF2 ; 3C
  58.  
  59. ; =============== S U B R O U T I N E =======================================
  60.  
  61.  
  62. sub_250BA: ; DATA XREF: ROM:0002507Ao
  63. move.w #2,ObjMode(a0)
  64. rts
  65. ; End of function sub_250BA
  66.  
  67.  
  68. ; =============== S U B R O U T I N E =======================================
  69.  
  70.  
  71. Obj_LoadGarciaData: ; DATA XREF: ROM:00025066o
  72.  
  73. ; FUNCTION CHUNK AT 00025E6A SIZE 0000005E BYTES
  74.  
  75. clr.w d0
  76. move.b $DF(a0),d0
  77. cmpi.b #$A,d0
  78. bls.s loc_250D6
  79. move.b #$A,d0
  80. move.b d0,$DF(a0)
  81.  
  82. loc_250D6: ; CODE XREF: Obj_LoadGarciaData+Aj
  83. lsl.w #5,d0
  84. lea word_2516E(pc),a3
  85. lea (a3,d0.w),a3
  86. lea EnemyMovementData(a0),a2 ; Data for enemy movement ie speed
  87. moveq #$1F,d0
  88.  
  89. loc_250E6: ; CODE XREF: Obj_LoadGarciaData+26j
  90. move.b (a3)+,(a2)+
  91. dbf d0,loc_250E6
  92. move.w #8,$30(a0)
  93. move.w #$FFFF,CurrentAnimation(a0)
  94. bset #4,AnimationStatus(a0) ; BIT 7 10000000 - 80
  95. ; BIT 6 01000000 - 40
  96. ; BIT 5 00100000 - 20
  97. ; BIT 4 00010000 - 10
  98. ; BIT 3 00001000 - 8
  99. ; BIT 2 00000100 - 4
  100. ; BIT 1 00000010 - 2
  101. ; BIT 0 00000001 - 1 set if animation script needs updating
  102. move.w EnemyMode(a0),d0
  103. clr.w EnemyMode(a0)
  104. move.w d0,d1
  105. beq.w loc_25154
  106. subq.b #1,d0
  107. beq.w loc_252CE
  108. subq.b #1,d0
  109. beq.w loc_2530A
  110. subq.b #1,d0
  111. beq.w loc_254D4
  112. subq.b #1,d0
  113. beq.w loc_25330
  114. subq.b #1,d0
  115. beq.w loc_25390
  116. subq.b #1,d0
  117. beq.w loc_253CC
  118. subq.b #1,d0
  119. beq.w loc_25450
  120. subq.b #1,d0
  121. beq.w loc_25488
  122. subq.b #1,d0
  123. beq.w loc_254EE
  124. subq.b #1,d0
  125. beq.w loc_2552E
  126. subq.b #1,d0
  127. beq.w loc_25534
  128. subq.b #1,d0
  129. beq.w loc_252EC
  130.  
  131. loc_25154: ; CODE XREF: Obj_LoadGarciaData+46j
  132. ; Obj_LoadGarciaData+272j ...
  133. bclr #0,$DE(a0)
  134. move.w #2,ObjMode(a0)
  135. andi.w #1,NextAnimation(a0)
  136. ori.w #0,NextAnimation(a0)
  137. rts
  138. ; ---------------------------------------------------------------------------
  139. word_2516E: dc.w $514 ; DATA XREF: Obj_LoadGarciaData+16t
  140. dc.w $230A
  141. dc.w $6300
  142. dc.w $2832
  143. dc.w $2828
  144. dc.w $404 ; Moving Backward Speed
  145. dc.w $3206
  146. dc.w $446
  147. dc.w $A1E
  148. dc.w $3C04
  149. dc.w $325A
  150. dc.w $406
  151. dc.w $281E
  152. dc.w $301
  153. dc.w $281E ; Punching Speed
  154. dc.w 0
  155. dc.w $514,$230A,$6300,$2832,$2828, $606,$3208, $446,$141E,$3204,$2D5A, $608,$281E, $402,$1E1E, 0
  156. dc.w $514,$230A,$6300,$2832,$2828, $808,$320A, $850,$141E,$1E08,$285A, $C0A,$141E, $404,$1114, 0
  157. dc.w $50F,$280A,$6300,$2828,$1E28, $A07,$320B, $850,$141E,$1E08,$285A, $C0A,$141E, $604, $E0F, 0
  158. dc.w $50F,$2814,$6300,$1E28,$1428, $C06,$3C0C, $950,$141E,$1E08,$235A, $E0F,$141E, $704, $C0A, 0
  159. dc.w $50A,$321E,$6300,$1E1E,$141E, $E05,$3C0E, $A50,$141E,$1E08,$235A, $E0F,$141E, $804, $A08, 0
  160. dc.w $305,$3214,$6300,$1E1E,$141E,$1008,$3C10, $A50,$141E,$140C,$145A,$1214,$141E, $806, $806, 0
  161. dc.w $305,$3214,$6300,$1E1E,$141E,$1208,$3C12, $A50,$141E,$140C,$145A,$1214,$141E, $806, $604, 0
  162. dc.w $305,$3C0A,$6300,$1E14,$141E,$1408,$3C14, $A50,$141E,$140C, $F5A,$1619,$141E, $806, $404, 0
  163. dc.w $305,$3C0A,$6300,$1E14,$141E,$1608,$3C16, $A50,$141E,$140C, $F5A,$1819,$141E, $80A, $202, 0
  164. dc.w $305,$3C0A,$6300,$1E14,$141E,$2008,$3C20, $A50,$141E,$140E, $F5A,$201E,$141E, $80A, $101, 0
  165. ; ---------------------------------------------------------------------------
  166.  
  167. loc_252CE: ; CODE XREF: Obj_LoadGarciaData+4Cj
  168. bclr #0,$DE(a0)
  169. move.w #$16,ObjMode(a0)
  170. andi.w #1,NextAnimation(a0)
  171. ori.w #$54,NextAnimation(a0) ; 'T'
  172. jmp sub_22D38
  173. ; ---------------------------------------------------------------------------
  174.  
  175. loc_252EC: ; CODE XREF: Obj_LoadGarciaData+8Ej
  176. bclr #0,$DE(a0)
  177. move.w #$16,ObjMode(a0)
  178. andi.w #1,NextAnimation(a0)
  179. ori.w #0,NextAnimation(a0)
  180. jmp sub_22D38
  181. ; ---------------------------------------------------------------------------
  182.  
  183. loc_2530A: ; CODE XREF: Obj_LoadGarciaData+52j
  184. bclr #7,ObjStatus1(a0) ; BIT 7 10000000 - 80 Obj Active
  185. ; BIT 6 01000000 - 40 Obj Pickup
  186. ; BIT 5 00100000 - 20 Main Character hold Partner/Enemy
  187. ; BIT 4 00010000 - 10 Partner/Enemy hold Main Character
  188. ; BIT 3 00001000 - 8 Attack flag
  189. ; BIT 2 00000100 - 4 Hit flag
  190. ; BIT 1 00000010 - 2
  191. ; BIT 0 00000001 - 1
  192. bclr #4,AnimationStatus(a0) ; BIT 7 10000000 - 80
  193. ; BIT 6 01000000 - 40
  194. ; BIT 5 00100000 - 20
  195. ; BIT 4 00010000 - 10
  196. ; BIT 3 00001000 - 8
  197. ; BIT 2 00000100 - 4
  198. ; BIT 1 00000010 - 2
  199. ; BIT 0 00000001 - 1 set if animation script needs updating
  200. bset #7,ObjStatus3(a0) ; BIT 7 10000000 - 80 Boundry (if set can go through scenery)
  201. ; BIT 6 01000000 - 40
  202. ; BIT 5 00100000 - 20
  203. ; BIT 4 00010000 - 10
  204. ; BIT 3 00001000 - 8
  205. ; BIT 2 00000100 - 4
  206. ; BIT 1 00000010 - 2
  207. ; BIT 0 00000001 - 1
  208. move.w #$22,ObjMode(a0) ; '"'
  209. andi.w #1,NextAnimation(a0)
  210. ori.w #2,NextAnimation(a0)
  211. rts
  212. ; ---------------------------------------------------------------------------
  213.  
  214. loc_25330: ; CODE XREF: Obj_LoadGarciaData+5Ej
  215. jsr sub_22B0E(pc)
  216. bcs.w loc_25154
  217. move.w a2,$70(a0)
  218. bset #0,$5B(a0)
  219. move.w a0,$70(a2)
  220. move.w #$58,$74(a0) ; 'X'
  221. move.w #$58,ObjID(a2) ; 'X'
  222. lea (byte_259AC).l,a3
  223. moveq #0,d0
  224. move.b $DF(a0),d0
  225. move.b (a3,d0.w),SmallCharPic(a2)
  226. jsr sub_25BEC(pc)
  227. bclr #0,$DE(a0)
  228. clr.w $D4(a0)
  229. clr.w EnemyMode(a0)
  230. clr.w EnemyModeTimer(a0)
  231. move.w #$24,ObjMode(a0) ; '$'
  232. andi.w #1,NextAnimation(a0)
  233. ori.w #$4A,NextAnimation(a0) ; 'J'
  234. bra.w EnemyWeapon
  235. ; ---------------------------------------------------------------------------
  236.  
  237. loc_25390: ; CODE XREF: Obj_LoadGarciaData+64j
  238. jsr sub_22B0E(pc)
  239. bcs.w loc_25154
  240. move.w a2,$70(a0)
  241. bset #0,$5B(a0)
  242. move.w a0,$70(a2)
  243. move.w #$5A,$74(a0) ; 'Z'
  244. move.w #$5A,$C(a2) ; 'Z'
  245. lea (byte_259A0).l,a3
  246. moveq #0,d0
  247. move.b $DF(a0),d0
  248. move.b (a3,d0.w),$1F(a2)
  249. jsr sub_25BEC(pc)
  250. bra.w loc_25154
  251. ; ---------------------------------------------------------------------------
  252.  
  253. loc_253CC: ; CODE XREF: Obj_LoadGarciaData+6Aj
  254. bsr.w sub_22B0E
  255. bcs.w loc_25488
  256. move.w a2,HeldObj(a0) ; Address of Obj holding current Obj
  257. bset #0,ObjStatus4(a0) ; BIT 7 10000000 - 80
  258. ; BIT 6 01000000 - 40
  259. ; BIT 5 00100000 - 20
  260. ; BIT 4 00010000 - 10
  261. ; BIT 3 00001000 - 8
  262. ; BIT 2 00000100 - 4
  263. ; BIT 1 00000010 - 2
  264. ; BIT 0 00000001 - 1 Enable Weapon
  265. move.w a0,HeldObj(a2) ; Address of Obj holding current Obj
  266. move.w #$58,$74(a0) ; 'X'
  267. move.w #$58,ObjID(a2) ; 'X'
  268. lea (byte_259AC).l,a3
  269. moveq #0,d0
  270. move.b $DF(a0),d0
  271. move.b (a3,d0.w),$1F(a2)
  272. jsr sub_25BEC(pc)
  273. bclr #0,$DE(a0)
  274. bclr #7,SpriteStatus(a0)
  275. clr.l JumpingHPosInertia(a0)
  276. clr.l JumpingVPosInertia(a0)
  277. move.l #$FF000000,Throw_V_Inertia(a0)
  278. addi.l #-$1000000,CameraY(a0)
  279. bclr #7,ObjStatus1(a0) ; BIT 7 10000000 - 80 Obj Active
  280. ; BIT 6 01000000 - 40 Obj Pickup
  281. ; BIT 5 00100000 - 20 Main Character hold Partner/Enemy
  282. ; BIT 4 00010000 - 10 Partner/Enemy hold Main Character
  283. ; BIT 3 00001000 - 8 Attack flag
  284. ; BIT 2 00000100 - 4 Hit flag
  285. ; BIT 1 00000010 - 2
  286. ; BIT 0 00000001 - 1
  287. move.w #$2C,ObjMode(a0) ; ','
  288. andi.w #1,NextAnimation(a0)
  289. ori.w #$5C,NextAnimation(a0) ; '\'
  290. move.l #$103F035D,d0
  291. jsr (PlaySound).l
  292. bra.w sub_260E4
  293. ; ---------------------------------------------------------------------------
  294.  
  295. loc_25450: ; CODE XREF: Obj_LoadGarciaData+70j
  296. move.l #$FF000000,Throw_V_Inertia(a0)
  297. addi.l #-$1000000,CameraY(a0)
  298. bset #7,SpriteStatus(a0)
  299. bset #4,ObjStatus3(a0) ; BIT 7 10000000 - 80 Boundry (if set can go through scenery)
  300. ; BIT 6 01000000 - 40
  301. ; BIT 5 00100000 - 20
  302. ; BIT 4 00010000 - 10
  303. ; BIT 3 00001000 - 8
  304. ; BIT 2 00000100 - 4
  305. ; BIT 1 00000010 - 2
  306. ; BIT 0 00000001 - 1
  307. bset #5,ObjStatus4(a0) ; BIT 7 10000000 - 80
  308. ; BIT 6 01000000 - 40
  309. ; BIT 5 00100000 - 20
  310. ; BIT 4 00010000 - 10
  311. ; BIT 3 00001000 - 8
  312. ; BIT 2 00000100 - 4
  313. ; BIT 1 00000010 - 2
  314. ; BIT 0 00000001 - 1 Enable Weapon
  315. move.w #$28,ObjMode(a0) ; '('
  316. andi.w #1,NextAnimation(a0)
  317. ori.w #4,NextAnimation(a0)
  318. bra.w sub_26024
  319. ; ---------------------------------------------------------------------------
  320.  
  321. loc_25488: ; CODE XREF: Obj_LoadGarciaData+76j
  322. ; Obj_LoadGarciaData+30Ej
  323. bclr #0,$DE(a0)
  324. bclr #7,$A(a0)
  325. clr.l $48(a0)
  326. clr.l $4C(a0)
  327. bset #5,$5B(a0)
  328. move.l #$FF000000,$3C(a0)
  329. addi.l #-$1000000,6(a0)
  330. move.w #$2A,0(a0) ; '*'
  331. andi.w #1,$E(a0)
  332. ori.w #4,$E(a0)
  333. move.l #$FF3F035D,d0
  334. jsr (PlaySound).l
  335. bra.w sub_2607E
  336. ; ---------------------------------------------------------------------------
  337.  
  338. loc_254D4: ; CODE XREF: Obj_LoadGarciaData+58j
  339. move.l #$FFA80000,$3C(a0)
  340. move.l #$10000,$48(a0)
  341. move.l #$FFFC0000,$4C(a0)
  342. bra.s loc_25506
  343. ; ---------------------------------------------------------------------------
  344.  
  345. loc_254EE: ; CODE XREF: Obj_LoadGarciaData+7Cj
  346. move.l #$FFD00000,$3C(a0)
  347. move.l #$10000,$48(a0)
  348. move.l #$FFFB0000,$4C(a0)
  349.  
  350. loc_25506: ; CODE XREF: Obj_LoadGarciaData+42Aj
  351. bset #4,$5A(a0)
  352. bset #7,$5A(a0)
  353. move.w #$36,0(a0) ; '6'
  354. andi.w #1,$E(a0)
  355. ori.w #$54,$E(a0) ; 'T'
  356. clr.w $CE(a0)
  357. jmp sub_25DBE
  358. ; ---------------------------------------------------------------------------
  359.  
  360. loc_2552E: ; CODE XREF: Obj_LoadGarciaData+82j
  361. jmp loc_25E6A
  362. ; ---------------------------------------------------------------------------
  363.  
  364. loc_25534: ; CODE XREF: Obj_LoadGarciaData+88j
  365. move.w #$120,VPos(a0)
  366. move.w #$120,CameraY(a0)
  367. bclr #7,$58(a0)
  368. bset #7,$5A(a0)
  369. andi.w #1,$E(a0)
  370. ori.w #2,$E(a0)
  371. move.w #$3C,0(a0) ; '<'
  372. jmp sub_22CF2
  373. ; ---------------------------------------------------------------------------
  374. jsr Chk_Hit
  375. jsr Chk_EnemyGrab
  376. btst #0,$1E(a0)
  377. bne.s loc_25580
  378. jsr Chk_CharacterCollision
  379. rts
  380. ; ---------------------------------------------------------------------------
  381.  
  382. loc_25580: ; CODE XREF: Obj_LoadGarciaData+4B4j
  383. andi.w #1,NextAnimation(a0)
  384. ori.w #0,NextAnimation(a0)
  385. move.w #2,ObjMode(a0)
  386. rts
  387. ; ---------------------------------------------------------------------------
  388.  
  389. Obj_GarciaDonovanMove: ; DATA XREF: ROM:00025042o
  390. cmpi.w #Garcia,ObjID(a0) ; Is it Garcia
  391. bne.s loc_255AE ; If not then branch
  392. btst #0,ObjStatus4(a0) ; Does Garcia have a weapon
  393. beq.s loc_255AE ; If no then branch
  394. move.w #$24,ObjMode(a0) ; '$'
  395. bra.w EnemyWeapon
  396. ; ---------------------------------------------------------------------------
  397.  
  398. loc_255AE: ; CODE XREF: Obj_LoadGarciaData+4D8j
  399. ; Obj_LoadGarciaData+4E0j
  400. jsr Chk_Hit
  401. jsr Chk_EnemyGrab
  402. bsr.w Chk_ObjDistance
  403. bcs.w loc_255FE
  404. bsr.w sub_2200C
  405. cmpi.w #$18,d0
  406. bcc.w loc_255D6
  407.  
  408. loc_255CE: ; DATA XREF: Obj_LoadGarciaData:word_255F2t
  409. bsr.w sub_22954
  410. bsr.w Chk_CharacterDistance
  411.  
  412. loc_255D6: ; CODE XREF: Obj_LoadGarciaData+508j
  413. move.w EnemyMode(a0),d0
  414. add.w d0,d0
  415. lea off_255E4(pc,d0.w),a1
  416. adda.w (a1),a1
  417. jmp (a1)
  418. ; ---------------------------------------------------------------------------
  419. off_255E4: dc.w Obj_GarciaDonovan_Stationary-off_255E4
  420. ; DATA XREF: Obj_LoadGarciaData:off_255E4o
  421. off_255E6: dc.w Obj_GarciaDonovan_Forward-off_255E6
  422. ; DATA XREF: Obj_LoadGarciaData:off_255E6o
  423. off_255E8: dc.w loc_256A8-off_255E8 ; DATA XREF: Obj_LoadGarciaData:off_255E8o
  424. off_255EA: dc.w Obj_GarciaDonovan_Backward-off_255EA
  425. ; DATA XREF: Obj_LoadGarciaData:off_255EAo
  426. off_255EC: dc.w Obj_GarciaDonovan_ForwardDown-off_255EC
  427. ; DATA XREF: Obj_LoadGarciaData:off_255ECo
  428. off_255EE: dc.w Obj_GarciaDonovan_BackwardDown-off_255EE
  429. ; DATA XREF: Obj_LoadGarciaData:off_255EEo
  430. off_255F0: dc.w Obj_GarciaDonovan_Up-off_255F0
  431. ; DATA XREF: Obj_LoadGarciaData:off_255F0o
  432. word_255F2: dc.w loc_255CE-word_255F2 ; DATA XREF: Obj_LoadGarciaData:word_255F2t
  433. off_255F4: dc.w loc_256E8-off_255F4 ; DATA XREF: Obj_LoadGarciaData:off_255F4o
  434. off_255F6: dc.w loc_25734-off_255F6 ; DATA XREF: Obj_LoadGarciaData:off_255F6o
  435. off_255F8: dc.w loc_257A2-off_255F8 ; DATA XREF: Obj_LoadGarciaData:off_255F8o
  436. off_255FA: dc.w loc_257DA-off_255FA ; DATA XREF: Obj_LoadGarciaData:off_255FAo
  437. off_255FC: dc.w loc_256DC-off_255FC ; DATA XREF: Obj_LoadGarciaData:off_255FCo
  438. ; ---------------------------------------------------------------------------
  439.  
  440. loc_255FE: ; CODE XREF: Obj_LoadGarciaData+4FCj
  441. bsr.w Chk_CharacterDistance
  442. bcs.w loc_2562C
  443. bsr.w sub_2200C
  444. move.w #2,EnemyModeTimer(a0)
  445. move.w #$60,d0 ; '`'
  446. bsr.w sub_22470
  447. bcs.s Obj_GarciaDonovan_Stationary
  448. tst.w d0
  449. bmi.s Obj_GarciaDonovan_Stationary
  450. move.w d0,$D2(a0)
  451. move.w #$C,EnemyMovementSpeed(a0)
  452. bra.w loc_256DC
  453. ; ---------------------------------------------------------------------------
  454.  
  455. loc_2562C: ; CODE XREF: Obj_LoadGarciaData+540j
  456. cmpi.w #1,EnemyModeTimer(a0)
  457. beq.s loc_25642
  458. move.w EnemyMode(a0),d0
  459. beq.w Obj_GarciaDonovan_Stationary
  460. subq.w #1,d0
  461. beq.w loc_256DC
  462.  
  463. loc_25642: ; CODE XREF: Obj_LoadGarciaData+570j
  464. jmp loc_227DC
  465. ; ---------------------------------------------------------------------------
  466.  
  467. Obj_GarciaDonovan_Stationary: ; CODE XREF: Obj_LoadGarciaData+556j
  468. ; Obj_LoadGarciaData+55Aj ...
  469. andi.w #1,NextAnimation(a0)
  470. ori.w #0,NextAnimation(a0)
  471.  
  472. loc_25654: ; CODE XREF: Obj_LoadGarciaData+622j
  473. subq.w #1,EnemyModeTimer(a0)
  474. bmi.w loc_25814
  475. rts
  476. ; ---------------------------------------------------------------------------
  477.  
  478. Obj_GarciaDonovan_ForwardDown: ; DATA XREF: Obj_LoadGarciaData:off_255ECo
  479. move.w $D4(a0),d0
  480. bsr.w sub_223F2
  481. move.w d0,$D2(a0)
  482. bra.w Obj_GarciaDonovan_Forward
  483. ; ---------------------------------------------------------------------------
  484.  
  485. Obj_GarciaDonovan_Backward: ; DATA XREF: Obj_LoadGarciaData:off_255EAo
  486. move.w $D4(a0),d0
  487. bsr.w sub_22470
  488. bcs.s Obj_GarciaDonovan_Stationary
  489. tst.w d0
  490. bmi.s Obj_GarciaDonovan_Stationary
  491. move.w d0,$D2(a0)
  492. bra.w Obj_GarciaDonovan_Forward
  493. ; ---------------------------------------------------------------------------
  494.  
  495. Obj_GarciaDonovan_BackwardDown: ; DATA XREF: Obj_LoadGarciaData:off_255EEo
  496. bsr.w sub_22388
  497. bcs.s Obj_GarciaDonovan_Stationary
  498. bchg #2,d0
  499. move.w d0,$D2(a0)
  500. bra.w loc_256DC
  501. ; ---------------------------------------------------------------------------
  502.  
  503. Obj_GarciaDonovan_Up: ; DATA XREF: Obj_LoadGarciaData:off_255F0o
  504. bsr.w sub_22388
  505. bcs.s Obj_GarciaDonovan_Stationary
  506. add.w $D4(a0),d0
  507. move.w d0,$D2(a0)
  508. bra.w loc_256DC
  509. ; ---------------------------------------------------------------------------
  510.  
  511. loc_256A8: ; DATA XREF: Obj_LoadGarciaData:off_255E8o
  512. bsr.w sub_22388
  513. bcs.s Obj_GarciaDonovan_Stationary
  514. move.w d0,$D2(a0)
  515.  
  516. Obj_GarciaDonovan_Forward: ; CODE XREF: Obj_LoadGarciaData+5A8j
  517. ; Obj_LoadGarciaData+5BEj
  518. ; DATA XREF: ...
  519. btst #7,ObjStatus1(a2) ; BIT 7 10000000 - 80 Obj Active
  520. ; BIT 6 01000000 - 40 Obj Pickup
  521. ; BIT 5 00100000 - 20 Main Character hold Partner/Enemy
  522. ; BIT 4 00010000 - 10 Partner/Enemy hold Main Character
  523. ; BIT 3 00001000 - 8 Attack flag
  524. ; BIT 2 00000100 - 4 Hit flag
  525. ; BIT 1 00000010 - 2
  526. ; BIT 0 00000001 - 1
  527. beq.w loc_256DC
  528. cmpi.w #7,d3
  529. bhi.w loc_256DC
  530. btst #0,ObjStatus4(a0) ; BIT 7 10000000 - 80
  531. ; BIT 6 01000000 - 40
  532. ; BIT 5 00100000 - 20
  533. ; BIT 4 00010000 - 10
  534. ; BIT 3 00001000 - 8
  535. ; BIT 2 00000100 - 4
  536. ; BIT 1 00000010 - 2
  537. ; BIT 0 00000001 - 1 Enable Weapon
  538. beq.s loc_256D4
  539. cmpi.w #$48,d2 ; 'H'
  540. bls.w loc_25814
  541.  
  542. loc_256D4: ; CODE XREF: Obj_LoadGarciaData+608j
  543. cmpi.w #$32,d2 ; '2'
  544. bls.w loc_25814
  545.  
  546. loc_256DC: ; CODE XREF: Obj_LoadGarciaData+566j
  547. ; Obj_LoadGarciaData+57Cj ...
  548. move.w #2,d3
  549. bsr.w sub_22596
  550. bra.w loc_25654
  551. ; ---------------------------------------------------------------------------
  552.  
  553. loc_256E8: ; DATA XREF: Obj_LoadGarciaData:off_255F4o
  554. cmpi.w #7,d3
  555. bhi.w loc_25814
  556. cmpi.w #$32,d2 ; '2'
  557. bhi.w loc_25814
  558. subq.w #1,EnemyModeTimer(a0)
  559. bpl.w locret_25732
  560. addq.w #1,EnemyMode(a0)
  561. move.b $FD(a0),d0
  562. bsr.w sub_22A0A
  563. add.b $FC(a0),d0
  564. move.w d0,EnemyModeTimer(a0)
  565. move.w #$1A,ObjMode(a0)
  566. andi.w #1,NextAnimation(a0)
  567. ori.w #$48,NextAnimation(a0) ; 'H'
  568. move.l #$A00216,d0
  569. jsr (PlaySound).l
  570.  
  571. locret_25732: ; CODE XREF: Obj_LoadGarciaData+63Aj
  572. ; Obj_LoadGarciaData+686j ...
  573. rts
  574. ; ---------------------------------------------------------------------------
  575.  
  576. loc_25734: ; DATA XREF: Obj_LoadGarciaData:off_255F6o
  577. cmpi.w #7,d3
  578. bhi.w loc_25814
  579. cmpi.w #$28,d2 ; '('
  580. bhi.w loc_25814
  581. subq.w #1,$D0(a0)
  582. bpl.s locret_25732
  583. move.w #$1A,0(a0)
  584. andi.w #1,$E(a0)
  585. ori.w #$48,$E(a0) ; 'H'
  586. move.l #$A00216,d0
  587. jsr (PlaySound).l
  588. cmpi.w #$E,$C(a0)
  589. bne.s loc_2577C
  590. move.w #7,$CE(a0)
  591. clr.w $D0(a0)
  592. rts
  593. ; ---------------------------------------------------------------------------
  594.  
  595. loc_2577C: ; CODE XREF: Obj_LoadGarciaData+6ACj
  596. addq.w #1,$CE(a0)
  597. jsr (sub_211A).l
  598. andi.b #3,d0
  599. bne.s loc_25790
  600. addq.w #1,$CE(a0)
  601.  
  602. loc_25790: ; CODE XREF: Obj_LoadGarciaData+6C8j
  603. move.b $FD(a0),d0
  604. bsr.w sub_22A0A
  605. add.b $FC(a0),d0
  606. move.w d0,$D0(a0)
  607. rts
  608. ; ---------------------------------------------------------------------------
  609.  
  610. loc_257A2: ; DATA XREF: Obj_LoadGarciaData:off_255F8o
  611. cmpi.w #7,d3
  612. bhi.w loc_25814
  613. subq.w #1,$D0(a0)
  614. bpl.s locret_25732
  615. move.w #7,$CE(a0)
  616. clr.w $D0(a0)
  617. move.w #$1C,0(a0)
  618. andi.w #1,$E(a0)
  619. ori.w #$4A,$E(a0) ; 'J'
  620. move.l #$A20216,d0
  621. jsr (PlaySound).l
  622. rts
  623. ; ---------------------------------------------------------------------------
  624.  
  625. loc_257DA: ; DATA XREF: Obj_LoadGarciaData:off_255FAo
  626. cmpi.w #7,d3
  627. bhi.w loc_25814
  628. subq.w #1,$D0(a0)
  629. bpl.w locret_25732
  630. move.w #7,$CE(a0)
  631. clr.w $D0(a0)
  632. move.w #$30,0(a0) ; '0'
  633. andi.w #1,$E(a0)
  634. ori.w #$4C,$E(a0) ; 'L'
  635. move.l #$A20214,d0
  636. jsr (PlaySound).l
  637. rts
  638. ; ---------------------------------------------------------------------------
  639.  
  640. loc_25814: ; CODE XREF: Obj_LoadGarciaData+596j
  641. ; Obj_LoadGarciaData+60Ej ...
  642. btst #6,$89(a0)
  643. bne.w loc_2597E
  644. jsr sub_22BA6(pc)
  645. bcs.w loc_2595C
  646. btst #0,ObjStatus4(a0) ; BIT 7 10000000 - 80
  647. ; BIT 6 01000000 - 40
  648. ; BIT 5 00100000 - 20
  649. ; BIT 4 00010000 - 10
  650. ; BIT 3 00001000 - 8
  651. ; BIT 2 00000100 - 4
  652. ; BIT 1 00000010 - 2
  653. ; BIT 0 00000001 - 1 Enable Weapon
  654. bne.s loc_25854
  655. jsr sub_22A78
  656. bcc.s loc_25854
  657. cmpi.w #Garcia,ObjID(a0)
  658. beq.s loc_2584A
  659. cmpi.w #$5A,ObjID(a3) ; 'Z'
  660. beq.w loc_25956
  661. bra.s loc_25854
  662. ; ---------------------------------------------------------------------------
  663.  
  664. loc_2584A: ; CODE XREF: Obj_LoadGarciaData+77Aj
  665. cmpi.w #$58,$C(a3) ; 'X'
  666. beq.w loc_25956
  667.  
  668. loc_25854: ; CODE XREF: Obj_LoadGarciaData+76Aj
  669. ; Obj_LoadGarciaData+772j ...
  670. bsr.w Chk_ObjDistance
  671. bcs.w sub_2287A
  672. cmpi.w #$A0,d0 ; ' '
  673. bgt.w sub_2297E
  674. cmpi.w #$78,d0 ; 'x'
  675. bgt.w sub_22920
  676. cmpi.w #7,d3
  677. bhi.s loc_258B2
  678. jsr sub_22A50(pc)
  679. bcs.w sub_22920
  680. btst #7,$58(a2)
  681. beq.s loc_258B2
  682. cmpi.w #$10,$C(a0)
  683. beq.s loc_2589C
  684. move.w ($FFFFF608).w,d6
  685. andi.w #2,d6
  686. bne.s loc_2589C
  687. cmpi.w #$60,d0 ; '`'
  688. bgt.w loc_25936
  689.  
  690. loc_2589C: ; CODE XREF: Obj_LoadGarciaData+7C6j
  691. ; Obj_LoadGarciaData+7D0j
  692. btst #0,$5B(a0)
  693. beq.s loc_258AC
  694. cmpi.w #$4A,d2 ; 'J'
  695. bls.w loc_2590C
  696.  
  697. loc_258AC: ; CODE XREF: Obj_LoadGarciaData+7E0j
  698. cmpi.w #$32,d2 ; '2'
  699. bls.s loc_258B8
  700.  
  701. loc_258B2: ; CODE XREF: Obj_LoadGarciaData+7AEj
  702. ; Obj_LoadGarciaData+7BEj ...
  703. bsr.w sub_22830
  704. rts
  705. ; ---------------------------------------------------------------------------
  706.  
  707. loc_258B8: ; CODE XREF: Obj_LoadGarciaData+7EEj
  708. cmpi.w #$E,$C(a0)
  709. beq.s loc_258DA
  710. btst #0,$5B(a0)
  711. bne.w loc_2590C
  712. cmpi.b #5,$DF(a0)
  713. bcs.w loc_258DA
  714. tst.w $3C(a2)
  715. bne.s loc_258F2
  716.  
  717. loc_258DA: ; CODE XREF: Obj_LoadGarciaData+7FCj
  718. ; Obj_LoadGarciaData+80Ej
  719. move.w #8,$CE(a0)
  720. move.b $FD(a0),d0
  721. bsr.w sub_22A0A
  722. add.b $FC(a0),d0
  723. move.w d0,$D0(a0)
  724. rts
  725. ; ---------------------------------------------------------------------------
  726.  
  727. loc_258F2: ; CODE XREF: Obj_LoadGarciaData+816j
  728. move.w #$A,$CE(a0)
  729. move.b $FD(a0),d0
  730. bsr.w sub_22A0A
  731. add.b $FC(a0),d0
  732. lsr.w #1,d0
  733. move.w d0,$D0(a0)
  734. rts
  735. ; ---------------------------------------------------------------------------
  736.  
  737. loc_2590C: ; CODE XREF: Obj_LoadGarciaData+7E6j
  738. ; Obj_LoadGarciaData+804j
  739. move.w #7,$CE(a0)
  740. clr.w $D0(a0)
  741. move.w #$20,0(a0) ; ' '
  742. andi.w #1,$E(a0)
  743. ori.w #$4E,$E(a0) ; 'N'
  744. move.l #$103F0343,d0
  745. jsr (PlaySound).l
  746. rts
  747. ; ---------------------------------------------------------------------------
  748.  
  749. loc_25936: ; CODE XREF: Obj_LoadGarciaData+7D6j
  750. cmpi.w #7,d3
  751. bhi.w loc_258B2
  752. clr.w $CE(a0)
  753. andi.w #1,$E(a0)
  754. ori.w #$50,$E(a0) ; 'P'
  755. move.w #$2E,0(a0) ; '.'
  756. rts
  757. ; ---------------------------------------------------------------------------
  758.  
  759. loc_25956: ; CODE XREF: Obj_LoadGarciaData+782j
  760. ; Obj_LoadGarciaData+78Ej
  761. jsr sub_22AD8
  762.  
  763. loc_2595C: ; CODE XREF: Obj_LoadGarciaData+760j
  764. clr.w $CE(a0)
Add Comment
Please, Sign In to add comment