Skip to content

Instantly share code, notes, and snippets.

@spiiin
Created June 7, 2015 15:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save spiiin/14197bc6b8889a0dd4f0 to your computer and use it in GitHub Desktop.
Save spiiin/14197bc6b8889a0dd4f0 to your computer and use it in GitHub Desktop.
BANK6:8C34 ; state (81 - patrol, 82 - attack dw)
BANK6:8C34
BANK6:8C34 enemy0_behaviour:
BANK6:8C34 LDA $4D0,X
BANK6:8C37 AND #$F ; state (81 - patrol, 82 - attack dw)
BANK6:8C39 BNE loc_50C51 ; present
BANK6:8C3B STA $530,X ; live state
BANK6:8C3E LDA #1
BANK6:8C40 STA $540,X ; pot.speed = 1
BANK6:8C43 INC $4D0,X ; init state "not viewing dw"
BANK6:8C46 LDA #$16
BANK6:8C48 STA $480,X ; timer for guarding
BANK6:8C4B JSR getRandomFromArray ; get random from values array
BANK6:8C4E STA $490,X
BANK6:8C51
BANK6:8C51 loc_50C51: ; CODE XREF: enemy0_behaviour+5j
BANK6:8C51 LDA $4D0,X ; load state
BANK6:8C54 AND #2
BANK6:8C56 BNE loc_50CBD ; if not viewing dw
BANK6:8C58 LDA $480,X ; if anim timer ends
BANK6:8C5B BEQ loc_50C90 ; if anim no == "stop and watching dw"
BANK6:8C5D LDA $420,X ; anim no
BANK6:8C60 CMP #$43 ; 'C' ; if anim == "stop and watching"
BANK6:8C62 BEQ stopAndViewForDwd ; dec anim timer
BANK6:8C64 DEC $480,X
BANK6:8C67 LDY #2
BANK6:8C69 LDA $580,X
BANK6:8C6C AND #1 ; if direction right
BANK6:8C6E BEQ loc_50C78
BANK6:8C70 LDA #0
BANK6:8C72 JSR enemy0_coord_unk1
BANK6:8C75 JMP loc_50C7D ; if hp lower than normal
BANK6:8C78 ; ---------------------------------------------------------------------------
BANK6:8C78
BANK6:8C78 loc_50C78: ; CODE XREF: enemy0_behaviour+3Aj
BANK6:8C78 LDA #3
BANK6:8C7A JSR enemy0_coord_unk2
BANK6:8C7D
BANK6:8C7D loc_50C7D: ; CODE XREF: enemy0_behaviour+41j
BANK6:8C7D ; enemy0_behaviour+74j
BANK6:8C7D LDA $5A0,X ; if hp lower than normal
BANK6:8C80 BEQ loc_50C89 ; view dw
BANK6:8C82 JSR calcCoordToDwRobot ; calc dist to dw
BANK6:8C85 CMP #$32 ; '2' ; if dist < 32
BANK6:8C87 BCS locret_50C8F
BANK6:8C89
BANK6:8C89 loc_50C89: ; CODE XREF: enemy0_behaviour+4Cj
BANK6:8C89 JSR enemy0_hunt_dw
BANK6:8C8C INC $4D0,X ; inc state to "view dw"
BANK6:8C8F
BANK6:8C8F locret_50C8F: ; CODE XREF: enemy0_behaviour+53j
BANK6:8C8F RTS
BANK6:8C90 ; ---------------------------------------------------------------------------
BANK6:8C90
BANK6:8C90 loc_50C90: ; CODE XREF: enemy0_behaviour+27j
BANK6:8C90 LDA $420,X ; if anim no == "stop and watching dw"
BANK6:8C93 CMP #$43 ; 'C'
BANK6:8C95 BEQ stopAndViewForDwd ; dec anim timer
BANK6:8C97 LDA #$43 ; 'C' ; load anim "stop and watching dw"
BANK6:8C99 JSR loadAnimNo
BANK6:8C9C LDA #$3C ; '<' ; reload anim timer
BANK6:8C9E STA $480,X
BANK6:8CA1 RTS
BANK6:8CA2 ; ---------------------------------------------------------------------------
BANK6:8CA2
BANK6:8CA2 stopAndViewForDwd: ; CODE XREF: enemy0_behaviour+2Ej
BANK6:8CA2 ; enemy0_behaviour+61j
BANK6:8CA2 DEC $480,X ; dec anim timer
BANK6:8CA5 LDA $480,X
BANK6:8CA8 BNE loc_50C7D ; if hp lower than normal
BANK6:8CAA LDA #$41 ; 'A' ; load anim "moving to next guard point"
BANK6:8CAC JSR loadAnimNo
BANK6:8CAF LDA #$32 ; '2' ; reload anim timer
BANK6:8CB1 STA $480,X
BANK6:8CB4 LDA $580,X ; change move direction
BANK6:8CB7 EOR #3
BANK6:8CB9 STA $580,X
BANK6:8CBC RTS ; end of enemy0 proc
BANK6:8CBD ; ---------------------------------------------------------------------------
BANK6:8CBD
BANK6:8CBD loc_50CBD: ; CODE XREF: enemy0_behaviour+22j
BANK6:8CBD LDY #2
BANK6:8CBF LDA #6
BANK6:8CC1 JSR sub_632D7
BANK6:8CC4 PHP
BANK6:8CC5 BCC loc_50CD6 ; set anim to "jump"
BANK6:8CC7 LDA $420,X ; if anim no == "go"
BANK6:8CCA CMP #$41 ; 'A'
BANK6:8CCC BEQ loc_50CDB
BANK6:8CCE LDA #$41 ; 'A' ; set anim to "go"
BANK6:8CD0 JSR loadAnimNo
BANK6:8CD3 JMP loc_50CDB
BANK6:8CD6 ; ---------------------------------------------------------------------------
BANK6:8CD6
BANK6:8CD6 loc_50CD6: ; CODE XREF: enemy0_behaviour+91j
BANK6:8CD6 LDA #$42 ; 'B' ; set anim to "jump"
BANK6:8CD8 JSR loadAnimNo
BANK6:8CDB
BANK6:8CDB loc_50CDB: ; CODE XREF: enemy0_behaviour+98j
BANK6:8CDB ; enemy0_behaviour+9Fj
BANK6:8CDB LDY #2
BANK6:8CDD LDA $580,X
BANK6:8CE0 AND #1
BANK6:8CE2 BEQ loc_50CEC
BANK6:8CE4 LDA #0
BANK6:8CE6 JSR enemy0_coord_unk1
BANK6:8CE9 JMP loc_50CF1
BANK6:8CEC ; ---------------------------------------------------------------------------
BANK6:8CEC
BANK6:8CEC loc_50CEC: ; CODE XREF: enemy0_behaviour+AEj
BANK6:8CEC LDA #3
BANK6:8CEE JSR enemy0_coord_unk2
BANK6:8CF1
BANK6:8CF1 loc_50CF1: ; CODE XREF: enemy0_behaviour+B5j
BANK6:8CF1 PLP
BANK6:8CF2 BCC loc_50D05
BANK6:8CF4 LDA $10
BANK6:8CF6 CMP #3
BANK6:8CF8 BCC loc_50D05
BANK6:8CFA LDA $580,X ; change direction
BANK6:8CFD EOR #3
BANK6:8CFF STA $580,X
BANK6:8D02 JSR sub_50D3F
BANK6:8D05
BANK6:8D05 loc_50D05: ; CODE XREF: enemy0_behaviour+BEj
BANK6:8D05 ; enemy0_behaviour+C4j
BANK6:8D05 LDA $4E0,X
BANK6:8D08 CMP #$C ; if behaviour no == standart
BANK6:8D0A BEQ locret_50D29 ; locret
BANK6:8D0C LDA $420,X ; if anim = "walk"
BANK6:8D0F CMP #$41 ; 'A'
BANK6:8D11 BNE locret_50D29 ; locret
BANK6:8D13 LDA $490,X
BANK6:8D16 BNE loc_50D26
BANK6:8D18 JSR getRandomFromArray ; get random from values array
BANK6:8D1B STA $490,X
BANK6:8D1E LDA #$23 ; '#'
BANK6:8D20 JSR incDA
BANK6:8D23 JSR sub_50D5D
BANK6:8D26
BANK6:8D26 loc_50D26: ; CODE XREF: enemy0_behaviour+E2j
BANK6:8D26 DEC $490,X
BANK6:8D29
BANK6:8D29 locret_50D29: ; CODE XREF: enemy0_behaviour+D6j
BANK6:8D29 ; enemy0_behaviour+DDj
BANK6:8D29 RTS
BANK6:8D29 ; End of function enemy0_behaviour
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment