If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Chip 'n Dale Rescue Rangers/ROM map: Difference between revisions
Jump to navigation
Jump to search
(Created page with "=PRG= ==Page 06== ===Function 06:8000=== Cycles through & executes the action script for each non-player object. Intro 8000: LDX #$02 8002: STX $4D ; Set current objec...") |
No edit summary |
||
Line 4: | Line 4: | ||
Cycles through & executes the action script for each non-player object. | Cycles through & executes the action script for each non-player object. | ||
8000: LDX #$02 | 8000: LDX #$02 | ||
8002: STX $4D ; Set current object to <b>02</b> (skipping over Chip/Dale) | 8002: STX $4D ; Set current object to <b>02</b> (skipping over Chip/Dale) | ||
8004: LDA $04D0,X | 8004: LDA $04D0,X | ||
8007: BPL $8082 ; Skip slot if unoccupied (if status flag <b>80</b> is not set) | 8007: BPL $8082 ; Skip slot if unoccupied (if status flag <b>80</b> is not set) | ||
8009: LDY $04E0,X ; | 8009: LDY $04E0,X ; | ||
800C: LDA $80A7,Y | 800C: LDA $80A7,Y | ||
Line 24: | Line 21: | ||
801C: JMP ($00) ; Execute action script | 801C: JMP ($00) ; Execute action script | ||
801F: LDA $0570,X | 801F: LDA $0570,X | ||
8022: AND #$40 | 8022: AND #$40 | ||
8024: BEQ $8029 | 8024: BEQ $8029 ; Skip ahead if object can't be damaged | ||
8026: JSR $8E15 | 8026: JSR $8E15 ; Check for collision damage against enemy | ||
8029: LDA $04D0,X | 8029: LDA $04D0,X | ||
802C: AND #$40 | 802C: AND #$40 | ||
802E: BEQ $8082 | 802E: BEQ $8082 ; Skip ahead if object doesn't cause damage | ||
8030: JSR $F92B | 8030: JSR $F92B ; Check for collision damage against players | ||
8033: BCS $8082 | 8033: BCS $8082 | ||
Revision as of 18:43, 30 May 2019
PRG
Page 06
Function 06:8000
Cycles through & executes the action script for each non-player object.
8000: LDX #$02 8002: STX $4D ; Set current object to 02 (skipping over Chip/Dale)
8004: LDA $04D0,X 8007: BPL $8082 ; Skip slot if unoccupied (if status flag 80 is not set)
8009: LDY $04E0,X ; 800C: LDA $80A7,Y 800F: STA $00 8011: LDA $810C,Y 8014: STA $01 ; Retrieve address of object's action script from pointer table 8016: LDA #$80 8018: PHA 8019: LDA #$1E 801B: PHA ; Set return address 801C: JMP ($00) ; Execute action script 801F: LDA $0570,X 8022: AND #$40 8024: BEQ $8029 ; Skip ahead if object can't be damaged
8026: JSR $8E15 ; Check for collision damage against enemy
8029: LDA $04D0,X 802C: AND #$40 802E: BEQ $8082 ; Skip ahead if object doesn't cause damage
8030: JSR $F92B ; Check for collision damage against players 8033: BCS $8082
8035: LDA $5E,Y 8038: BNE $8082
803A: LDA $54,Y 803D: CMP #$03 803F: BCS $8082
8041: LDA $0420,Y 8044: BEQ $804D
8046: LDA #$09 8048: STA $54,Y 804B: BNE $8082
804D: JSR $808E 8050: LDA $56,Y 8053: BPL $8082
8055: AND #$0F 8057: PHA 8058: LDA #$00 805A: STA $56,Y 805D: PLA 805E: TAY 805F: LDA #$80 8061: STA $04D0,Y 8064: LDA #$3E 8066: STA $04E0,Y 8069: LDA #$00 806B: STA $0410,Y 806E: STA $0430,Y 8071: LDA $0420,Y 8074: CMP #$22 8076: BEQ $8082
8078: CMP #$23 807A: BEQ $8082
807C: SEC 807D: SBC #$09 807F: STA $0420,Y
8082: INC $4D 8084: LDX $4D 8086: CPX #$10 8088: BEQ $808D
808A: JMP $8004
808D: RTS ; Exit function