diff --git a/Dungeons/crumblefloor_tag.asm b/Dungeons/crumblefloor_tag.asm index 15972ca..00f3c8a 100644 --- a/Dungeons/crumblefloor_tag.asm +++ b/Dungeons/crumblefloor_tag.asm @@ -1,259 +1,274 @@ org $01CC04 ; holes_1 tag routine -JSL NewTagRoutine +JSL CrumbleFloorTag_Main RTS pullpc -NewTagRoutine: + ; check under link feet what tile he is standing on -; save somewhere in ram last tile we were on so it doesn't turn it back off +; save in ram last tile we were on so it doesn't turn back off ; kill room tag -LDA.b $20 : CLC : ADC #$10 : AND.b #$F0 -STA.w $0224 ; y +CrumbleFloorTag_Main: +{ + LDA.b $20 : CLC : ADC #$10 : AND.b #$F0 + STA.w $0224 ; y -LDA.b $22 : CLC : ADC #$08 : AND.b #$F0 -STA.w $0225 ; x + LDA.b $22 : CLC : ADC #$08 : AND.b #$F0 + STA.w $0225 ; x -LDA.w $0224 : CMP.w $0226 : BNE .differentTile -LDA.w $0225 : CMP.w $0227 : BNE .differentTile -JMP .sameTile -.differentTile + LDA.w $0224 : CMP.w $0226 : BNE .differentTile + LDA.w $0225 : CMP.w $0227 : BNE .differentTile + JMP .sameTile + .differentTile -; do code here for tile code -REP #$30 + ; do code here for tile code + REP #$30 -LDA.w $022A : AND.w #$01F0 : LSR #$02 : STA.b $00 -LDA.w $0228 : AND.w #$01F0 : ASL #$04 : CLC : ADC.b $00 : STA.b $06 -TAX + LDA.w $022A : AND.w #$01F0 : LSR #$02 : STA.b $00 + LDA.w $0228 : AND.w #$01F0 : ASL #$04 + CLC : ADC.b $00 : STA.b $06 + TAX -LDA.l $7E2000, X : CMP.w #$0CCC : BNE + - JSR update_pit_tile - SEP #$30 - JSR spawnFallingTile - BRA .doneupdate -+ -LDA.l $7E2000, X : CMP.w #$0C62 : BNE + - JSR update_crack_tile -+ -.doneupdate -SEP #$30 + LDA.l $7E2000, X : CMP.w #$0CCC : BNE + + JSR update_pit_tile + SEP #$30 + JSR spawnFallingTile + BRA .doneupdate + + + LDA.l $7E2000, X : CMP.w #$0C62 : BNE + + JSR update_crack_tile + + + .doneupdate + SEP #$30 -.sameTile + .sameTile -LDA.w $0224 : STA.w $0226 : STA.w $0228 ; Last Y -LDA.w $0225 : STA.w $0227 : STA.w $022A ; Last X -; Last Y with link high byte -LDA.b $21 : STA.w $0229 -LDA.b $23 : STA.w $022B -RTL + LDA.w $0224 : STA.w $0226 : STA.w $0228 ; Last Y + LDA.w $0225 : STA.w $0227 : STA.w $022A ; Last X + ; Last Y with link high byte + LDA.b $21 : STA.w $0229 + LDA.b $23 : STA.w $022B + RTL +} spawnFallingTile: -LDX.b #$1D +{ + LDX.b #$1D -.next -LDA.l $7FF800,X -BNE .skip + .next + LDA.l $7FF800,X + BNE .skip -LDA.b #$03 ; GARNISH 03 -STA.l $7FF800,X + LDA.b #$03 ; GARNISH 03 + STA.l $7FF800,X -LDA.w $022A -STA.l $7FF83C, X + LDA.w $022A + STA.l $7FF83C, X -LDA.w $022B -STA.l $7FF878,X + LDA.w $022B + STA.l $7FF878,X -LDA.w $0228 -CLC -ADC.b #$10 -STA.l $7FF81E,X + LDA.w $0228 + CLC + ADC.b #$10 + STA.l $7FF81E,X -LDA.w $0229 -ADC.b #$00 -STA.l $7FF85A,X + LDA.w $0229 + ADC.b #$00 + STA.l $7FF85A,X -LDA.b #$1F -STA.l $7FF90E,X + LDA.b #$1F + STA.l $7FF90E,X -STA.w $0FB4 + STA.w $0FB4 -BRA .exit + BRA .exit -.skip -DEX -BPL .next + .skip + DEX + BPL .next -.exit -RTS + .exit + RTS +} update_crack_tile: -STZ.b $0E -REP #$30 +{ + STZ.b $0E + REP #$30 -JSR replace_crack_pit + JSR replace_crack_pit -SEP #$30 - -LDA.b #$01 -STA.b $14 -REP #$30 -RTS + SEP #$30 + LDA.b #$01 + STA.b $14 + REP #$30 + RTS +} update_pit_tile: -STZ.b $0E -REP #$30 +{ + STZ.b $0E + REP #$30 -JSR replace_tile_pit + JSR replace_tile_pit -SEP #$30 + SEP #$30 -LDA.b #$01 -STA.b $14 -REP #$30 -RTS + LDA.b #$01 + STA.b $14 + REP #$30 + RTS +} replace_crack_pit: -LDX.w $1000 +{ + LDX.w $1000 -LDA.w #$0CCC -STA.w $1006,X + LDA.w #$0CCC + STA.w $1006,X -LDA.w #$0CDC -STA.w $100C,X + LDA.w #$0CDC + STA.w $100C,X -LDA.w #$0CCD -STA.w $1012,X + LDA.w #$0CCD + STA.w $1012,X -LDA.w #$0CDD -STA.w $1018,X + LDA.w #$0CDD + STA.w $1018,X -LDX.b $06 + LDX.b $06 -LDA.w #$0CCC -STA.l $7E2000, X -LDA.w #$0CDC -STA.l $7E2080, X -LDA.w #$0CCD -STA.l $7E2002, X -LDA.w #$0CDD -STA.l $7E2082, X + LDA.w #$0CCC + STA.l $7E2000, X + LDA.w #$0CDC + STA.l $7E2080, X + LDA.w #$0CCD + STA.l $7E2002, X + LDA.w #$0CDD + STA.l $7E2082, X -LDA.w #$01E9 -AND.w #$03FF -TAX + LDA.w #$01E9 + AND.w #$03FF + TAX -LDA.l $7EFE00,X -AND.w #$00FF -STA.b $08 -STA.b $09 + LDA.l $7EFE00,X + AND.w #$00FF + STA.b $08 + STA.b $09 -JMP replace_tile_continue + JMP replace_tile_continue +} replace_tile_pit: -LDX.w $1000 +{ + LDX.w $1000 -LDA.w #$01E9 -STA.w $1006,X -STA.w $100C,X -STA.w $1012,X -STA.w $1018,X + LDA.w #$01E9 + STA.w $1006,X + STA.w $100C,X + STA.w $1012,X + STA.w $1018,X -LDX.b $06 + LDX.b $06 -LDA.w #$01E9 -STA.l $7E2000, X -STA.l $7E2080, X -STA.l $7E2002, X -STA.l $7E2082, X + LDA.w #$01E9 + STA.l $7E2000, X + STA.l $7E2080, X + STA.l $7E2002, X + STA.l $7E2082, X -TXA -LSR -TAX -LDA.w #$2020 -STA.l $7F2000, X -STA.l $7F2040, X + TXA + LSR + TAX + LDA.w #$2020 + STA.l $7F2000, X + STA.l $7F2040, X -LDA.w #$01E9 -AND.w #$03FF -TAX + LDA.w #$01E9 + AND.w #$03FF + TAX -LDA.l $7EFE00,X -AND.w #$00FF -STA.b $08 -STA.b $09 + LDA.l $7EFE00,X + AND.w #$00FF + STA.b $08 + STA.b $09 -JMP replace_tile_continue + JMP replace_tile_continue +} replace_tile_continue: +{ + LDX.w $1000 -LDX.w $1000 + LDA.w #$0000 + JSR draw_one_corner + STA.w $1002,X -LDA.w #$0000 -JSR draw_one_corner -STA.w $1002,X + LDA.w #$0080 + JSR draw_one_corner + STA.w $1008,X -LDA.w #$0080 -JSR draw_one_corner -STA.w $1008,X + LDA.w #$0002 + JSR draw_one_corner + STA.w $100E,X -LDA.w #$0002 -JSR draw_one_corner -STA.w $100E,X + LDA.w #$0082 + JSR draw_one_corner + STA.w $1014,X -LDA.w #$0082 -JSR draw_one_corner -STA.w $1014,X + LDA.w #$0100 + STA.w $1004,X + STA.w $100A,X + STA.w $1010,X + STA.w $1016,X -LDA.w #$0100 -STA.w $1004,X -STA.w $100A,X -STA.w $1010,X -STA.w $1016,X + LDA.w #$FFFF + STA.w $101A,X -LDA.w #$FFFF -STA.w $101A,X - -TXA -CLC -ADC.w #$0018 -STA.w $1000 - -RTS + TXA + CLC + ADC.w #$0018 + STA.w $1000 + RTS +} ; --------------------------------------------------------- draw_one_corner: -CLC -ADC.b $06 -STA.b $0E +{ + CLC + ADC.b $06 + STA.b $0E -AND.w #$0040 + AND.w #$0040 -LSR A -LSR A -LSR A -LSR A + LSR A + LSR A + LSR A + LSR A -XBA -STA.b $08 + XBA + STA.b $08 -LDA.b $0E -AND.w #$303F -LSR A -ORA.b $08 -STA.b $08 + LDA.b $0E + AND.w #$303F + LSR A + ORA.b $08 + STA.b $08 -LDA.b $0E -AND.w #$0F80 -LSR A -LSR A -ORA.b $08 -XBA + LDA.b $0E + AND.w #$0F80 + LSR A + LSR A + ORA.b $08 + XBA -RTS + RTS +}