diff --git a/Dungeons/floor_puzzle.asm b/Dungeons/floor_puzzle.asm index a3222e9..be31ae6 100644 --- a/Dungeons/floor_puzzle.asm +++ b/Dungeons/floor_puzzle.asm @@ -8,317 +8,323 @@ org $01CC00 ; holes_0 tag routine JSL NewTagRoutine RTS -; org $3A8000 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 -; kill room tag -LDA.b $20 : CLC : ADC #$10 : AND.b #$F0 -STA.w $0224 ; y +{ + ; 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 + ; kill room tag + 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 $22 : CLC : ADC.w #$0008 : AND.w #$01F0 : LSR #$02 : STA.b $00 + LDA.w $20 : CLC : ADC.w #$0010 : AND.w #$01F0 : ASL #$04 : CLC : ADC.b $00 : STA.b $06 + TAX -LDA.w $22 : CLC : ADC.w #$0008 : AND.w #$01F0 : LSR #$02 : STA.b $00 -LDA.w $20 : CLC : ADC.w #$0010 : AND.w #$01F0 : ASL #$04 : CLC : ADC.b $00 : STA.b $06 -TAX + LDA.l $7E2000, X : CMP.w #$0DED : BNE + + JSR update_star_tile + JSR SearchForEmptyStar + BRA .doneupdate + + + LDA.l $7E2000, X : CMP.w #$0DEE : BNE + + ;JSR SearchToRedStar + JSR update_red_star_tile + SEP #$30 + STZ.b $AE ; kill room tag! + ;JSR update_empty_tile + ;JSR SearchForEmptyStar + + -LDA.l $7E2000, X : CMP.w #$0DED : BNE + - JSR update_star_tile - JSR SearchForEmptyStar - BRA .doneupdate -+ -LDA.l $7E2000, X : CMP.w #$0DEE : BNE + - ;JSR SearchToRedStar - JSR update_red_star_tile - SEP #$30 - STZ.b $AE ; kill room tag! - ;JSR update_empty_tile - ;JSR SearchForEmptyStar -+ + .doneupdate + SEP #$30 -.doneupdate -SEP #$30 + .sameTile -.sameTile - -LDA.w $0224 : STA.w $0226 ; Last Y -LDA.w $0225 : STA.w $0227 ; Last X - - - -RTL + LDA.w $0224 : STA.w $0226 ; Last Y + LDA.w $0225 : STA.w $0227 ; Last X + RTL +} update_empty_tile: -STZ.b $0E -REP #$30 +{ + STZ.b $0E + REP #$30 -JSR replace_tile_empty + JSR replace_tile_empty -SEP #$30 - -LDA.b #$01 -STA.b $14 -REP #$30 -RTS + SEP #$30 + LDA.b #$01 + STA.b $14 + REP #$30 + RTS +} update_star_tile: -STZ.b $0E -REP #$30 +{ + STZ.b $0E + REP #$30 -JSR replace_tile_star + JSR replace_tile_star -SEP #$30 + SEP #$30 -LDA.b #$01 -STA.b $14 -REP #$30 -RTS + LDA.b #$01 + STA.b $14 + REP #$30 + RTS +} update_red_star_tile: -STZ.b $0E -REP #$30 +{ + STZ.b $0E + REP #$30 -JSR replace_red_tile_star + JSR replace_red_tile_star -SEP #$30 - -LDA.b #$01 -STA.b $14 -REP #$30 -RTS + SEP #$30 + LDA.b #$01 + STA.b $14 + REP #$30 + RTS +} replace_red_tile_star: -LDX.w $1000 +{ + LDX.w $1000 -LDA.w #$19EE -STA.w $1006,X + LDA.w #$19EE + STA.w $1006,X -LDA.w #$99EE -STA.w $100C,X + LDA.w #$99EE + STA.w $100C,X -LDA.w #$59EE -STA.w $1012,X + LDA.w #$59EE + STA.w $1012,X -LDA.w #$D9EE -STA.w $1018,X + LDA.w #$D9EE + STA.w $1018,X -LDX.b $06 + LDX.b $06 -LDA.w #$19EE : STA.l $7E2000, X -LDA.w #$99EE : STA.l $7E2080, X -LDA.w #$59EE : STA.l $7E2002, X -LDA.w #$D9EE : STA.l $7E2082, X + LDA.w #$19EE : STA.l $7E2000, X + LDA.w #$99EE : STA.l $7E2080, X + LDA.w #$59EE : STA.l $7E2002, X + LDA.w #$D9EE : STA.l $7E2082, X -AND.w #$03FF -TAX + AND.w #$03FF + TAX -LDA.l $7EFE00,X -AND.w #$00FF -STA.b $08 -STA.b $09 - -JMP replace_tile_continue + LDA.l $7EFE00,X + AND.w #$00FF + STA.b $08 + STA.b $09 + JMP replace_tile_continue +} replace_tile_star: -LDX.w $1000 +{ + LDX.w $1000 -LDA.w #$0DEE -STA.w $1006,X + LDA.w #$0DEE + STA.w $1006,X -LDA.w #$8DEE -STA.w $100C,X + LDA.w #$8DEE + STA.w $100C,X -LDA.w #$4DEE -STA.w $1012,X + LDA.w #$4DEE + STA.w $1012,X -LDA.w #$CDEE -STA.w $1018,X + LDA.w #$CDEE + STA.w $1018,X -LDX.b $06 + LDX.b $06 -LDA.w #$0DEE : STA.l $7E2000, X -LDA.w #$8DEE : STA.l $7E2080, X -LDA.w #$4DEE : STA.l $7E2002, X -LDA.w #$CDEE : STA.l $7E2082, X + LDA.w #$0DEE : STA.l $7E2000, X + LDA.w #$8DEE : STA.l $7E2080, X + LDA.w #$4DEE : STA.l $7E2002, X + LDA.w #$CDEE : STA.l $7E2082, X -AND.w #$03FF -TAX + AND.w #$03FF + TAX -LDA.l $7EFE00,X -AND.w #$00FF -STA.b $08 -STA.b $09 - -JMP replace_tile_continue + LDA.l $7EFE00,X + AND.w #$00FF + STA.b $08 + STA.b $09 + JMP replace_tile_continue +} replace_tile_empty: -LDX.w $1000 +{ + LDX.w $1000 -LDA.w #$0DED -STA.w $1006,X + LDA.w #$0DED + STA.w $1006,X -LDA.w #$8DED -STA.w $100C,X + LDA.w #$8DED + STA.w $100C,X -LDA.w #$4DED -STA.w $1012,X + LDA.w #$4DED + STA.w $1012,X -LDA.w #$CDED -STA.w $1018,X + LDA.w #$CDED + STA.w $1018,X -LDX.b $06 -LDA.w #$0DED : STA.l $7E2000, X -LDA.w #$8DED : STA.l $7E2080, X -LDA.w #$4DED : STA.l $7E2002, X -LDA.w #$CDED : STA.l $7E2082, X + LDX.b $06 + LDA.w #$0DED : STA.l $7E2000, X + LDA.w #$8DED : STA.l $7E2080, X + LDA.w #$4DED : STA.l $7E2002, X + LDA.w #$CDED : STA.l $7E2082, X -AND.w #$03FF -TAX + 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 -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 + TXA + CLC + ADC.w #$0018 + STA.w $1000 -RTS + 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 - -RTS + LDA.b $0E + AND.w #$0F80 + LSR A + LSR A + ORA.b $08 + XBA + RTS +} SearchForEmptyStar: +{ + LDX.w #$1FFE + -- + LDA.l $7E2000, X : CMP.w #$0DED : BEQ .foundEmptyTile + DEX : DEX + BPL -- + ; all tiles were on + SEP #$30 + LDA.w $0468 : BEQ + + STZ.w $0468 + STZ.w $068E + STZ.w $0690 + LDA.b #$05 : STA.b $11 + LDA.b #$25 : STA $012F + STZ.b $AE ; kill room tag! + LDA.b #$01 : STA $0466 + + + BRA + + .foundEmptyTile + SEP #$30 + LDA.w $0468 : BNE + + INC.w $0468 + STZ.w $068E + STZ.w $0690 + LDA.b #$05 : STA.b $11 + + -LDX.w #$1FFE - --- -LDA.l $7E2000, X : CMP.w #$0DED : BEQ .foundEmptyTile -DEX : DEX -BPL -- -; all tiles were on -SEP #$30 -LDA.w $0468 : BEQ + -STZ.w $0468 -STZ.w $068E -STZ.w $0690 -LDA.b #$05 : STA.b $11 -LDA.b #$25 : STA $012F -STZ.b $AE ; kill room tag! -+ -BRA + -.foundEmptyTile -SEP #$30 -LDA.w $0468 : BNE + -INC.w $0468 -STZ.w $068E -STZ.w $0690 -LDA.b #$05 : STA.b $11 -+ - -RTS - + RTS +} SearchToRedStar: +{ + LDX.w #$1FFE + -- + LDA.l $7E2000, X : CMP.w #$0DEE : BEQ .foundStarTile + DEX : DEX + BPL -- -LDX.w #$1FFE + SEP #$30 + STZ.b $AE ; kill room tag! --- -LDA.l $7E2000, X : CMP.w #$0DEE : BEQ .foundStarTile -DEX : DEX -BPL -- + RTS -SEP #$30 -STZ.b $AE ; kill room tag! - -RTS - -.foundStarTile -PHX -STX.b $06 -JSR update_red_star_tile -PLX -BRA -- + .foundStarTile + PHX + STX.b $06 + JSR update_red_star_tile + PLX + BRA -- +} pushpc \ No newline at end of file